{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction: Machine Learning Project Part 2\n",
    "\n",
    "In this series of notebooks, we are working on a supervised, regression machine learning problem. Using real-world New York City building energy data, we want to predict the Energy Star Score of a building and determine the factors that influence the score.\n",
    "\n",
    "We are using the general outline of the machine learning pipeline to structure our project:\n",
    "\n",
    "1. Data cleaning and formatting\n",
    "2. Exploratory data analysis\n",
    "3. Feature engineering and selection\n",
    "4. Compare several machine learning models on a performance metric\n",
    "5. Perform hyperparameter tuning on the best model to optimize it for the problem\n",
    "6. Evaluate the best model on the testing set\n",
    "7. Interpret the model results to the extent possible\n",
    "8. Draw conclusions and write a well-documented report\n",
    "\n",
    "The first notebook covered steps 1-3, and in this notebook, we will cover 4-6. In this series, I focus more on the implementations rather than the details, and for those looking for more background into the machine learning methods, I recommend [Hands-On Machine Learning with Scikit-Learn and Tensorflow](http://shop.oreilly.com/product/0636920052289.do) by Aurelien Geron. This is an excellent resource for the basic theory behind the algorithms and how to use them effectively in Python!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imports \n",
    "\n",
    "We will use the standard data science and machine learning libraries in this project. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Pandas and numpy for data manipulation\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# No warnings about setting value on copy of slice\n",
    "pd.options.mode.chained_assignment = None\n",
    "pd.set_option('display.max_columns', 60)\n",
    "\n",
    "# Matplotlib for visualization\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# Set default font size\n",
    "plt.rcParams['font.size'] = 24\n",
    "\n",
    "from IPython.core.pylabtools import figsize\n",
    "\n",
    "# Seaborn for visualization\n",
    "import seaborn as sns\n",
    "sns.set(font_scale = 2)\n",
    "\n",
    "# Imputing missing values and scaling values\n",
    "from sklearn.preprocessing import Imputer, MinMaxScaler\n",
    "\n",
    "# Machine Learning Models\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "\n",
    "# Hyperparameter tuning\n",
    "from sklearn.model_selection import RandomizedSearchCV, GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Read in Data\n",
    "\n",
    "First let's read in the formatted data from the previous notebook. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Feature Size:  (6622, 64)\n",
      "Testing Feature Size:   (2839, 64)\n",
      "Training Labels Size:   (6622, 1)\n",
      "Testing Labels Size:    (2839, 1)\n"
     ]
    }
   ],
   "source": [
    "# Read in data into dataframes \n",
    "train_features = pd.read_csv('data/training_features.csv')\n",
    "test_features = pd.read_csv('data/testing_features.csv')\n",
    "train_labels = pd.read_csv('data/training_labels.csv')\n",
    "test_labels = pd.read_csv('data/testing_labels.csv')\n",
    "\n",
    "# Display sizes of data\n",
    "print('Training Feature Size: ', train_features.shape)\n",
    "print('Testing Feature Size:  ', test_features.shape)\n",
    "print('Training Labels Size:  ', train_labels.shape)\n",
    "print('Testing Labels Size:   ', test_labels.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a reminder, here is what the formatted data looks like. In the first notebook, we engineered a number features by taking the natural log of the variables, included two categorical variables, and selected a subset of features by removing highly collinear features. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Order</th>\n",
       "      <th>Property Id</th>\n",
       "      <th>DOF Gross Floor Area</th>\n",
       "      <th>Year Built</th>\n",
       "      <th>Number of Buildings - Self-reported</th>\n",
       "      <th>Occupancy</th>\n",
       "      <th>Site EUI (kBtu/ft²)</th>\n",
       "      <th>Weather Normalized Site Electricity Intensity (kWh/ft²)</th>\n",
       "      <th>Weather Normalized Site Natural Gas Intensity (therms/ft²)</th>\n",
       "      <th>Water Intensity (All Water Sources) (gal/ft²)</th>\n",
       "      <th>Latitude</th>\n",
       "      <th>Longitude</th>\n",
       "      <th>Community Board</th>\n",
       "      <th>Census Tract</th>\n",
       "      <th>log_Direct GHG Emissions (Metric Tons CO2e)</th>\n",
       "      <th>log_Water Intensity (All Water Sources) (gal/ft²)</th>\n",
       "      <th>Borough_Staten Island</th>\n",
       "      <th>Largest Property Use Type_Adult Education</th>\n",
       "      <th>Largest Property Use Type_Automobile Dealership</th>\n",
       "      <th>Largest Property Use Type_Bank Branch</th>\n",
       "      <th>Largest Property Use Type_College/University</th>\n",
       "      <th>Largest Property Use Type_Convenience Store without Gas Station</th>\n",
       "      <th>Largest Property Use Type_Courthouse</th>\n",
       "      <th>Largest Property Use Type_Distribution Center</th>\n",
       "      <th>Largest Property Use Type_Enclosed Mall</th>\n",
       "      <th>Largest Property Use Type_Financial Office</th>\n",
       "      <th>Largest Property Use Type_Hospital (General Medical &amp; Surgical)</th>\n",
       "      <th>Largest Property Use Type_Hotel</th>\n",
       "      <th>Largest Property Use Type_K-12 School</th>\n",
       "      <th>Largest Property Use Type_Library</th>\n",
       "      <th>...</th>\n",
       "      <th>Largest Property Use Type_Multifamily Housing</th>\n",
       "      <th>Largest Property Use Type_Museum</th>\n",
       "      <th>Largest Property Use Type_Non-Refrigerated Warehouse</th>\n",
       "      <th>Largest Property Use Type_Other</th>\n",
       "      <th>Largest Property Use Type_Other - Education</th>\n",
       "      <th>Largest Property Use Type_Other - Entertainment/Public Assembly</th>\n",
       "      <th>Largest Property Use Type_Other - Lodging/Residential</th>\n",
       "      <th>Largest Property Use Type_Other - Mall</th>\n",
       "      <th>Largest Property Use Type_Other - Public Services</th>\n",
       "      <th>Largest Property Use Type_Other - Recreation</th>\n",
       "      <th>Largest Property Use Type_Other - Services</th>\n",
       "      <th>Largest Property Use Type_Other - Specialty Hospital</th>\n",
       "      <th>Largest Property Use Type_Outpatient Rehabilitation/Physical Therapy</th>\n",
       "      <th>Largest Property Use Type_Parking</th>\n",
       "      <th>Largest Property Use Type_Performing Arts</th>\n",
       "      <th>Largest Property Use Type_Pre-school/Daycare</th>\n",
       "      <th>Largest Property Use Type_Refrigerated Warehouse</th>\n",
       "      <th>Largest Property Use Type_Repair Services (Vehicle, Shoe, Locksmith, etc.)</th>\n",
       "      <th>Largest Property Use Type_Residence Hall/Dormitory</th>\n",
       "      <th>Largest Property Use Type_Residential Care Facility</th>\n",
       "      <th>Largest Property Use Type_Restaurant</th>\n",
       "      <th>Largest Property Use Type_Retail Store</th>\n",
       "      <th>Largest Property Use Type_Self-Storage Facility</th>\n",
       "      <th>Largest Property Use Type_Senior Care Community</th>\n",
       "      <th>Largest Property Use Type_Social/Meeting Hall</th>\n",
       "      <th>Largest Property Use Type_Strip Mall</th>\n",
       "      <th>Largest Property Use Type_Supermarket/Grocery Store</th>\n",
       "      <th>Largest Property Use Type_Urgent Care/Clinic/Other Outpatient</th>\n",
       "      <th>Largest Property Use Type_Wholesale Club/Supercenter</th>\n",
       "      <th>Largest Property Use Type_Worship Facility</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>13276</td>\n",
       "      <td>5849784</td>\n",
       "      <td>90300.0</td>\n",
       "      <td>1950</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>126.0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>1.2</td>\n",
       "      <td>99.41</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.088818</td>\n",
       "      <td>4.599253</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7377</td>\n",
       "      <td>4398442</td>\n",
       "      <td>52000.0</td>\n",
       "      <td>1926</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>95.4</td>\n",
       "      <td>4.7</td>\n",
       "      <td>0.9</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.835496</td>\n",
       "      <td>-73.887745</td>\n",
       "      <td>3.0</td>\n",
       "      <td>161.0</td>\n",
       "      <td>5.384036</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>9479</td>\n",
       "      <td>4665374</td>\n",
       "      <td>104700.0</td>\n",
       "      <td>1954</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>40.4</td>\n",
       "      <td>3.8</td>\n",
       "      <td>0.3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.663206</td>\n",
       "      <td>-73.949469</td>\n",
       "      <td>9.0</td>\n",
       "      <td>329.0</td>\n",
       "      <td>5.017280</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>14774</td>\n",
       "      <td>3393340</td>\n",
       "      <td>129333.0</td>\n",
       "      <td>1992</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>157.1</td>\n",
       "      <td>16.9</td>\n",
       "      <td>1.1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.622968</td>\n",
       "      <td>-74.078742</td>\n",
       "      <td>1.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>6.510853</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3286</td>\n",
       "      <td>2704325</td>\n",
       "      <td>109896.0</td>\n",
       "      <td>1927</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>62.3</td>\n",
       "      <td>3.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>28.65</td>\n",
       "      <td>40.782421</td>\n",
       "      <td>-73.972622</td>\n",
       "      <td>7.0</td>\n",
       "      <td>165.0</td>\n",
       "      <td>6.123589</td>\n",
       "      <td>3.355153</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1060</td>\n",
       "      <td>2430725</td>\n",
       "      <td>182655.0</td>\n",
       "      <td>1929</td>\n",
       "      <td>1</td>\n",
       "      <td>90</td>\n",
       "      <td>52.9</td>\n",
       "      <td>9.7</td>\n",
       "      <td>0.2</td>\n",
       "      <td>4.80</td>\n",
       "      <td>40.725136</td>\n",
       "      <td>-74.004438</td>\n",
       "      <td>2.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>5.516649</td>\n",
       "      <td>1.568616</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>10846</td>\n",
       "      <td>5737475</td>\n",
       "      <td>65400.0</td>\n",
       "      <td>1942</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>66.8</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.6</td>\n",
       "      <td>67.14</td>\n",
       "      <td>40.637833</td>\n",
       "      <td>-73.973045</td>\n",
       "      <td>12.0</td>\n",
       "      <td>490.0</td>\n",
       "      <td>5.426271</td>\n",
       "      <td>4.206780</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>4280</td>\n",
       "      <td>2670505</td>\n",
       "      <td>113150.0</td>\n",
       "      <td>1938</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>78.4</td>\n",
       "      <td>5.7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>30.73</td>\n",
       "      <td>40.776035</td>\n",
       "      <td>-73.964418</td>\n",
       "      <td>8.0</td>\n",
       "      <td>142.0</td>\n",
       "      <td>6.067036</td>\n",
       "      <td>3.425239</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>12974</td>\n",
       "      <td>2964670</td>\n",
       "      <td>137700.0</td>\n",
       "      <td>1959</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>63.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>0.5</td>\n",
       "      <td>41.96</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.170447</td>\n",
       "      <td>3.736717</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>13244</td>\n",
       "      <td>4414693</td>\n",
       "      <td>63693.0</td>\n",
       "      <td>1941</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>97.8</td>\n",
       "      <td>4.3</td>\n",
       "      <td>0.8</td>\n",
       "      <td>86.88</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.680855</td>\n",
       "      <td>4.464528</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>3903</td>\n",
       "      <td>2669664</td>\n",
       "      <td>82644.0</td>\n",
       "      <td>1922</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>55.4</td>\n",
       "      <td>4.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.762510</td>\n",
       "      <td>-73.970085</td>\n",
       "      <td>5.0</td>\n",
       "      <td>11203.0</td>\n",
       "      <td>1.335001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>8336</td>\n",
       "      <td>2809354</td>\n",
       "      <td>51317.0</td>\n",
       "      <td>1925</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>118.7</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.849372</td>\n",
       "      <td>-73.832075</td>\n",
       "      <td>10.0</td>\n",
       "      <td>26601.0</td>\n",
       "      <td>5.662960</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>12 rows × 64 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Order  Property Id  DOF Gross Floor Area  Year Built  \\\n",
       "0   13276      5849784               90300.0        1950   \n",
       "1    7377      4398442               52000.0        1926   \n",
       "2    9479      4665374              104700.0        1954   \n",
       "3   14774      3393340              129333.0        1992   \n",
       "4    3286      2704325              109896.0        1927   \n",
       "5    1060      2430725              182655.0        1929   \n",
       "6   10846      5737475               65400.0        1942   \n",
       "7    4280      2670505              113150.0        1938   \n",
       "8   12974      2964670              137700.0        1959   \n",
       "9   13244      4414693               63693.0        1941   \n",
       "10   3903      2669664               82644.0        1922   \n",
       "11   8336      2809354               51317.0        1925   \n",
       "\n",
       "    Number of Buildings - Self-reported  Occupancy  Site EUI (kBtu/ft²)  \\\n",
       "0                                     1        100                126.0   \n",
       "1                                     1        100                 95.4   \n",
       "2                                     1        100                 40.4   \n",
       "3                                     1        100                157.1   \n",
       "4                                     1        100                 62.3   \n",
       "5                                     1         90                 52.9   \n",
       "6                                     1        100                 66.8   \n",
       "7                                     1        100                 78.4   \n",
       "8                                     1        100                 63.0   \n",
       "9                                     1        100                 97.8   \n",
       "10                                    1        100                 55.4   \n",
       "11                                    1        100                118.7   \n",
       "\n",
       "    Weather Normalized Site Electricity Intensity (kWh/ft²)  \\\n",
       "0                                                 5.2         \n",
       "1                                                 4.7         \n",
       "2                                                 3.8         \n",
       "3                                                16.9         \n",
       "4                                                 3.5         \n",
       "5                                                 9.7         \n",
       "6                                                 3.0         \n",
       "7                                                 5.7         \n",
       "8                                                 3.4         \n",
       "9                                                 4.3         \n",
       "10                                                4.5         \n",
       "11                                                3.6         \n",
       "\n",
       "    Weather Normalized Site Natural Gas Intensity (therms/ft²)  \\\n",
       "0                                                 1.2            \n",
       "1                                                 0.9            \n",
       "2                                                 0.3            \n",
       "3                                                 1.1            \n",
       "4                                                 0.0            \n",
       "5                                                 0.2            \n",
       "6                                                 0.6            \n",
       "7                                                 NaN            \n",
       "8                                                 0.5            \n",
       "9                                                 0.8            \n",
       "10                                                0.0            \n",
       "11                                                1.1            \n",
       "\n",
       "    Water Intensity (All Water Sources) (gal/ft²)   Latitude  Longitude  \\\n",
       "0                                           99.41        NaN        NaN   \n",
       "1                                             NaN  40.835496 -73.887745   \n",
       "2                                             NaN  40.663206 -73.949469   \n",
       "3                                             NaN  40.622968 -74.078742   \n",
       "4                                           28.65  40.782421 -73.972622   \n",
       "5                                            4.80  40.725136 -74.004438   \n",
       "6                                           67.14  40.637833 -73.973045   \n",
       "7                                           30.73  40.776035 -73.964418   \n",
       "8                                           41.96        NaN        NaN   \n",
       "9                                           86.88        NaN        NaN   \n",
       "10                                            NaN  40.762510 -73.970085   \n",
       "11                                            NaN  40.849372 -73.832075   \n",
       "\n",
       "    Community Board  Census Tract  \\\n",
       "0               NaN           NaN   \n",
       "1               3.0         161.0   \n",
       "2               9.0         329.0   \n",
       "3               1.0          27.0   \n",
       "4               7.0         165.0   \n",
       "5               2.0          37.0   \n",
       "6              12.0         490.0   \n",
       "7               8.0         142.0   \n",
       "8               NaN           NaN   \n",
       "9               NaN           NaN   \n",
       "10              5.0       11203.0   \n",
       "11             10.0       26601.0   \n",
       "\n",
       "    log_Direct GHG Emissions (Metric Tons CO2e)  \\\n",
       "0                                      6.088818   \n",
       "1                                      5.384036   \n",
       "2                                      5.017280   \n",
       "3                                      6.510853   \n",
       "4                                      6.123589   \n",
       "5                                      5.516649   \n",
       "6                                      5.426271   \n",
       "7                                      6.067036   \n",
       "8                                      6.170447   \n",
       "9                                      5.680855   \n",
       "10                                     1.335001   \n",
       "11                                     5.662960   \n",
       "\n",
       "    log_Water Intensity (All Water Sources) (gal/ft²)  Borough_Staten Island  \\\n",
       "0                                            4.599253                      0   \n",
       "1                                                 NaN                      0   \n",
       "2                                                 NaN                      0   \n",
       "3                                                 NaN                      1   \n",
       "4                                            3.355153                      0   \n",
       "5                                            1.568616                      0   \n",
       "6                                            4.206780                      0   \n",
       "7                                            3.425239                      0   \n",
       "8                                            3.736717                      0   \n",
       "9                                            4.464528                      0   \n",
       "10                                                NaN                      0   \n",
       "11                                                NaN                      0   \n",
       "\n",
       "    Largest Property Use Type_Adult Education  \\\n",
       "0                                           0   \n",
       "1                                           0   \n",
       "2                                           0   \n",
       "3                                           0   \n",
       "4                                           0   \n",
       "5                                           0   \n",
       "6                                           0   \n",
       "7                                           0   \n",
       "8                                           0   \n",
       "9                                           0   \n",
       "10                                          0   \n",
       "11                                          0   \n",
       "\n",
       "    Largest Property Use Type_Automobile Dealership  \\\n",
       "0                                                 0   \n",
       "1                                                 0   \n",
       "2                                                 0   \n",
       "3                                                 0   \n",
       "4                                                 0   \n",
       "5                                                 0   \n",
       "6                                                 0   \n",
       "7                                                 0   \n",
       "8                                                 0   \n",
       "9                                                 0   \n",
       "10                                                0   \n",
       "11                                                0   \n",
       "\n",
       "    Largest Property Use Type_Bank Branch  \\\n",
       "0                                       0   \n",
       "1                                       0   \n",
       "2                                       0   \n",
       "3                                       0   \n",
       "4                                       0   \n",
       "5                                       0   \n",
       "6                                       0   \n",
       "7                                       0   \n",
       "8                                       0   \n",
       "9                                       0   \n",
       "10                                      0   \n",
       "11                                      0   \n",
       "\n",
       "    Largest Property Use Type_College/University  \\\n",
       "0                                              0   \n",
       "1                                              0   \n",
       "2                                              0   \n",
       "3                                              0   \n",
       "4                                              0   \n",
       "5                                              0   \n",
       "6                                              0   \n",
       "7                                              0   \n",
       "8                                              0   \n",
       "9                                              0   \n",
       "10                                             0   \n",
       "11                                             0   \n",
       "\n",
       "    Largest Property Use Type_Convenience Store without Gas Station  \\\n",
       "0                                                   0                 \n",
       "1                                                   0                 \n",
       "2                                                   0                 \n",
       "3                                                   0                 \n",
       "4                                                   0                 \n",
       "5                                                   0                 \n",
       "6                                                   0                 \n",
       "7                                                   0                 \n",
       "8                                                   0                 \n",
       "9                                                   0                 \n",
       "10                                                  0                 \n",
       "11                                                  0                 \n",
       "\n",
       "    Largest Property Use Type_Courthouse  \\\n",
       "0                                      0   \n",
       "1                                      0   \n",
       "2                                      0   \n",
       "3                                      0   \n",
       "4                                      0   \n",
       "5                                      0   \n",
       "6                                      0   \n",
       "7                                      0   \n",
       "8                                      0   \n",
       "9                                      0   \n",
       "10                                     0   \n",
       "11                                     0   \n",
       "\n",
       "    Largest Property Use Type_Distribution Center  \\\n",
       "0                                               0   \n",
       "1                                               0   \n",
       "2                                               0   \n",
       "3                                               0   \n",
       "4                                               0   \n",
       "5                                               0   \n",
       "6                                               0   \n",
       "7                                               0   \n",
       "8                                               0   \n",
       "9                                               0   \n",
       "10                                              0   \n",
       "11                                              0   \n",
       "\n",
       "    Largest Property Use Type_Enclosed Mall  \\\n",
       "0                                         0   \n",
       "1                                         0   \n",
       "2                                         0   \n",
       "3                                         0   \n",
       "4                                         0   \n",
       "5                                         0   \n",
       "6                                         0   \n",
       "7                                         0   \n",
       "8                                         0   \n",
       "9                                         0   \n",
       "10                                        0   \n",
       "11                                        0   \n",
       "\n",
       "    Largest Property Use Type_Financial Office  \\\n",
       "0                                            0   \n",
       "1                                            0   \n",
       "2                                            0   \n",
       "3                                            0   \n",
       "4                                            0   \n",
       "5                                            0   \n",
       "6                                            0   \n",
       "7                                            0   \n",
       "8                                            0   \n",
       "9                                            0   \n",
       "10                                           0   \n",
       "11                                           0   \n",
       "\n",
       "    Largest Property Use Type_Hospital (General Medical & Surgical)  \\\n",
       "0                                                   0                 \n",
       "1                                                   0                 \n",
       "2                                                   0                 \n",
       "3                                                   0                 \n",
       "4                                                   0                 \n",
       "5                                                   0                 \n",
       "6                                                   0                 \n",
       "7                                                   0                 \n",
       "8                                                   0                 \n",
       "9                                                   0                 \n",
       "10                                                  0                 \n",
       "11                                                  0                 \n",
       "\n",
       "    Largest Property Use Type_Hotel  Largest Property Use Type_K-12 School  \\\n",
       "0                                 0                                      0   \n",
       "1                                 0                                      0   \n",
       "2                                 0                                      0   \n",
       "3                                 0                                      0   \n",
       "4                                 0                                      0   \n",
       "5                                 0                                      0   \n",
       "6                                 0                                      0   \n",
       "7                                 0                                      0   \n",
       "8                                 0                                      0   \n",
       "9                                 0                                      0   \n",
       "10                                0                                      0   \n",
       "11                                0                                      0   \n",
       "\n",
       "    Largest Property Use Type_Library  \\\n",
       "0                                   0   \n",
       "1                                   0   \n",
       "2                                   0   \n",
       "3                                   0   \n",
       "4                                   0   \n",
       "5                                   0   \n",
       "6                                   0   \n",
       "7                                   0   \n",
       "8                                   0   \n",
       "9                                   0   \n",
       "10                                  0   \n",
       "11                                  0   \n",
       "\n",
       "                       ...                      \\\n",
       "0                      ...                       \n",
       "1                      ...                       \n",
       "2                      ...                       \n",
       "3                      ...                       \n",
       "4                      ...                       \n",
       "5                      ...                       \n",
       "6                      ...                       \n",
       "7                      ...                       \n",
       "8                      ...                       \n",
       "9                      ...                       \n",
       "10                     ...                       \n",
       "11                     ...                       \n",
       "\n",
       "    Largest Property Use Type_Multifamily Housing  \\\n",
       "0                                               1   \n",
       "1                                               1   \n",
       "2                                               1   \n",
       "3                                               0   \n",
       "4                                               1   \n",
       "5                                               0   \n",
       "6                                               1   \n",
       "7                                               1   \n",
       "8                                               1   \n",
       "9                                               1   \n",
       "10                                              1   \n",
       "11                                              1   \n",
       "\n",
       "    Largest Property Use Type_Museum  \\\n",
       "0                                  0   \n",
       "1                                  0   \n",
       "2                                  0   \n",
       "3                                  0   \n",
       "4                                  0   \n",
       "5                                  0   \n",
       "6                                  0   \n",
       "7                                  0   \n",
       "8                                  0   \n",
       "9                                  0   \n",
       "10                                 0   \n",
       "11                                 0   \n",
       "\n",
       "    Largest Property Use Type_Non-Refrigerated Warehouse  \\\n",
       "0                                                   0      \n",
       "1                                                   0      \n",
       "2                                                   0      \n",
       "3                                                   0      \n",
       "4                                                   0      \n",
       "5                                                   0      \n",
       "6                                                   0      \n",
       "7                                                   0      \n",
       "8                                                   0      \n",
       "9                                                   0      \n",
       "10                                                  0      \n",
       "11                                                  0      \n",
       "\n",
       "    Largest Property Use Type_Other  \\\n",
       "0                                 0   \n",
       "1                                 0   \n",
       "2                                 0   \n",
       "3                                 0   \n",
       "4                                 0   \n",
       "5                                 0   \n",
       "6                                 0   \n",
       "7                                 0   \n",
       "8                                 0   \n",
       "9                                 0   \n",
       "10                                0   \n",
       "11                                0   \n",
       "\n",
       "    Largest Property Use Type_Other - Education  \\\n",
       "0                                             0   \n",
       "1                                             0   \n",
       "2                                             0   \n",
       "3                                             0   \n",
       "4                                             0   \n",
       "5                                             0   \n",
       "6                                             0   \n",
       "7                                             0   \n",
       "8                                             0   \n",
       "9                                             0   \n",
       "10                                            0   \n",
       "11                                            0   \n",
       "\n",
       "    Largest Property Use Type_Other - Entertainment/Public Assembly  \\\n",
       "0                                                   0                 \n",
       "1                                                   0                 \n",
       "2                                                   0                 \n",
       "3                                                   0                 \n",
       "4                                                   0                 \n",
       "5                                                   0                 \n",
       "6                                                   0                 \n",
       "7                                                   0                 \n",
       "8                                                   0                 \n",
       "9                                                   0                 \n",
       "10                                                  0                 \n",
       "11                                                  0                 \n",
       "\n",
       "    Largest Property Use Type_Other - Lodging/Residential  \\\n",
       "0                                                   0       \n",
       "1                                                   0       \n",
       "2                                                   0       \n",
       "3                                                   0       \n",
       "4                                                   0       \n",
       "5                                                   0       \n",
       "6                                                   0       \n",
       "7                                                   0       \n",
       "8                                                   0       \n",
       "9                                                   0       \n",
       "10                                                  0       \n",
       "11                                                  0       \n",
       "\n",
       "    Largest Property Use Type_Other - Mall  \\\n",
       "0                                        0   \n",
       "1                                        0   \n",
       "2                                        0   \n",
       "3                                        0   \n",
       "4                                        0   \n",
       "5                                        0   \n",
       "6                                        0   \n",
       "7                                        0   \n",
       "8                                        0   \n",
       "9                                        0   \n",
       "10                                       0   \n",
       "11                                       0   \n",
       "\n",
       "    Largest Property Use Type_Other - Public Services  \\\n",
       "0                                                   0   \n",
       "1                                                   0   \n",
       "2                                                   0   \n",
       "3                                                   0   \n",
       "4                                                   0   \n",
       "5                                                   0   \n",
       "6                                                   0   \n",
       "7                                                   0   \n",
       "8                                                   0   \n",
       "9                                                   0   \n",
       "10                                                  0   \n",
       "11                                                  0   \n",
       "\n",
       "    Largest Property Use Type_Other - Recreation  \\\n",
       "0                                              0   \n",
       "1                                              0   \n",
       "2                                              0   \n",
       "3                                              0   \n",
       "4                                              0   \n",
       "5                                              0   \n",
       "6                                              0   \n",
       "7                                              0   \n",
       "8                                              0   \n",
       "9                                              0   \n",
       "10                                             0   \n",
       "11                                             0   \n",
       "\n",
       "    Largest Property Use Type_Other - Services  \\\n",
       "0                                            0   \n",
       "1                                            0   \n",
       "2                                            0   \n",
       "3                                            0   \n",
       "4                                            0   \n",
       "5                                            0   \n",
       "6                                            0   \n",
       "7                                            0   \n",
       "8                                            0   \n",
       "9                                            0   \n",
       "10                                           0   \n",
       "11                                           0   \n",
       "\n",
       "    Largest Property Use Type_Other - Specialty Hospital  \\\n",
       "0                                                   0      \n",
       "1                                                   0      \n",
       "2                                                   0      \n",
       "3                                                   0      \n",
       "4                                                   0      \n",
       "5                                                   0      \n",
       "6                                                   0      \n",
       "7                                                   0      \n",
       "8                                                   0      \n",
       "9                                                   0      \n",
       "10                                                  0      \n",
       "11                                                  0      \n",
       "\n",
       "    Largest Property Use Type_Outpatient Rehabilitation/Physical Therapy  \\\n",
       "0                                                   0                      \n",
       "1                                                   0                      \n",
       "2                                                   0                      \n",
       "3                                                   0                      \n",
       "4                                                   0                      \n",
       "5                                                   0                      \n",
       "6                                                   0                      \n",
       "7                                                   0                      \n",
       "8                                                   0                      \n",
       "9                                                   0                      \n",
       "10                                                  0                      \n",
       "11                                                  0                      \n",
       "\n",
       "    Largest Property Use Type_Parking  \\\n",
       "0                                   0   \n",
       "1                                   0   \n",
       "2                                   0   \n",
       "3                                   0   \n",
       "4                                   0   \n",
       "5                                   0   \n",
       "6                                   0   \n",
       "7                                   0   \n",
       "8                                   0   \n",
       "9                                   0   \n",
       "10                                  0   \n",
       "11                                  0   \n",
       "\n",
       "    Largest Property Use Type_Performing Arts  \\\n",
       "0                                           0   \n",
       "1                                           0   \n",
       "2                                           0   \n",
       "3                                           0   \n",
       "4                                           0   \n",
       "5                                           0   \n",
       "6                                           0   \n",
       "7                                           0   \n",
       "8                                           0   \n",
       "9                                           0   \n",
       "10                                          0   \n",
       "11                                          0   \n",
       "\n",
       "    Largest Property Use Type_Pre-school/Daycare  \\\n",
       "0                                              0   \n",
       "1                                              0   \n",
       "2                                              0   \n",
       "3                                              0   \n",
       "4                                              0   \n",
       "5                                              0   \n",
       "6                                              0   \n",
       "7                                              0   \n",
       "8                                              0   \n",
       "9                                              0   \n",
       "10                                             0   \n",
       "11                                             0   \n",
       "\n",
       "    Largest Property Use Type_Refrigerated Warehouse  \\\n",
       "0                                                  0   \n",
       "1                                                  0   \n",
       "2                                                  0   \n",
       "3                                                  0   \n",
       "4                                                  0   \n",
       "5                                                  0   \n",
       "6                                                  0   \n",
       "7                                                  0   \n",
       "8                                                  0   \n",
       "9                                                  0   \n",
       "10                                                 0   \n",
       "11                                                 0   \n",
       "\n",
       "    Largest Property Use Type_Repair Services (Vehicle, Shoe, Locksmith, etc.)  \\\n",
       "0                                                   0                            \n",
       "1                                                   0                            \n",
       "2                                                   0                            \n",
       "3                                                   0                            \n",
       "4                                                   0                            \n",
       "5                                                   0                            \n",
       "6                                                   0                            \n",
       "7                                                   0                            \n",
       "8                                                   0                            \n",
       "9                                                   0                            \n",
       "10                                                  0                            \n",
       "11                                                  0                            \n",
       "\n",
       "    Largest Property Use Type_Residence Hall/Dormitory  \\\n",
       "0                                                   0    \n",
       "1                                                   0    \n",
       "2                                                   0    \n",
       "3                                                   0    \n",
       "4                                                   0    \n",
       "5                                                   0    \n",
       "6                                                   0    \n",
       "7                                                   0    \n",
       "8                                                   0    \n",
       "9                                                   0    \n",
       "10                                                  0    \n",
       "11                                                  0    \n",
       "\n",
       "    Largest Property Use Type_Residential Care Facility  \\\n",
       "0                                                   0     \n",
       "1                                                   0     \n",
       "2                                                   0     \n",
       "3                                                   0     \n",
       "4                                                   0     \n",
       "5                                                   0     \n",
       "6                                                   0     \n",
       "7                                                   0     \n",
       "8                                                   0     \n",
       "9                                                   0     \n",
       "10                                                  0     \n",
       "11                                                  0     \n",
       "\n",
       "    Largest Property Use Type_Restaurant  \\\n",
       "0                                      0   \n",
       "1                                      0   \n",
       "2                                      0   \n",
       "3                                      0   \n",
       "4                                      0   \n",
       "5                                      0   \n",
       "6                                      0   \n",
       "7                                      0   \n",
       "8                                      0   \n",
       "9                                      0   \n",
       "10                                     0   \n",
       "11                                     0   \n",
       "\n",
       "    Largest Property Use Type_Retail Store  \\\n",
       "0                                        0   \n",
       "1                                        0   \n",
       "2                                        0   \n",
       "3                                        0   \n",
       "4                                        0   \n",
       "5                                        0   \n",
       "6                                        0   \n",
       "7                                        0   \n",
       "8                                        0   \n",
       "9                                        0   \n",
       "10                                       0   \n",
       "11                                       0   \n",
       "\n",
       "    Largest Property Use Type_Self-Storage Facility  \\\n",
       "0                                                 0   \n",
       "1                                                 0   \n",
       "2                                                 0   \n",
       "3                                                 0   \n",
       "4                                                 0   \n",
       "5                                                 0   \n",
       "6                                                 0   \n",
       "7                                                 0   \n",
       "8                                                 0   \n",
       "9                                                 0   \n",
       "10                                                0   \n",
       "11                                                0   \n",
       "\n",
       "    Largest Property Use Type_Senior Care Community  \\\n",
       "0                                                 0   \n",
       "1                                                 0   \n",
       "2                                                 0   \n",
       "3                                                 1   \n",
       "4                                                 0   \n",
       "5                                                 0   \n",
       "6                                                 0   \n",
       "7                                                 0   \n",
       "8                                                 0   \n",
       "9                                                 0   \n",
       "10                                                0   \n",
       "11                                                0   \n",
       "\n",
       "    Largest Property Use Type_Social/Meeting Hall  \\\n",
       "0                                               0   \n",
       "1                                               0   \n",
       "2                                               0   \n",
       "3                                               0   \n",
       "4                                               0   \n",
       "5                                               0   \n",
       "6                                               0   \n",
       "7                                               0   \n",
       "8                                               0   \n",
       "9                                               0   \n",
       "10                                              0   \n",
       "11                                              0   \n",
       "\n",
       "    Largest Property Use Type_Strip Mall  \\\n",
       "0                                      0   \n",
       "1                                      0   \n",
       "2                                      0   \n",
       "3                                      0   \n",
       "4                                      0   \n",
       "5                                      0   \n",
       "6                                      0   \n",
       "7                                      0   \n",
       "8                                      0   \n",
       "9                                      0   \n",
       "10                                     0   \n",
       "11                                     0   \n",
       "\n",
       "    Largest Property Use Type_Supermarket/Grocery Store  \\\n",
       "0                                                   0     \n",
       "1                                                   0     \n",
       "2                                                   0     \n",
       "3                                                   0     \n",
       "4                                                   0     \n",
       "5                                                   0     \n",
       "6                                                   0     \n",
       "7                                                   0     \n",
       "8                                                   0     \n",
       "9                                                   0     \n",
       "10                                                  0     \n",
       "11                                                  0     \n",
       "\n",
       "    Largest Property Use Type_Urgent Care/Clinic/Other Outpatient  \\\n",
       "0                                                   0               \n",
       "1                                                   0               \n",
       "2                                                   0               \n",
       "3                                                   0               \n",
       "4                                                   0               \n",
       "5                                                   0               \n",
       "6                                                   0               \n",
       "7                                                   0               \n",
       "8                                                   0               \n",
       "9                                                   0               \n",
       "10                                                  0               \n",
       "11                                                  0               \n",
       "\n",
       "    Largest Property Use Type_Wholesale Club/Supercenter  \\\n",
       "0                                                   0      \n",
       "1                                                   0      \n",
       "2                                                   0      \n",
       "3                                                   0      \n",
       "4                                                   0      \n",
       "5                                                   0      \n",
       "6                                                   0      \n",
       "7                                                   0      \n",
       "8                                                   0      \n",
       "9                                                   0      \n",
       "10                                                  0      \n",
       "11                                                  0      \n",
       "\n",
       "    Largest Property Use Type_Worship Facility  \n",
       "0                                            0  \n",
       "1                                            0  \n",
       "2                                            0  \n",
       "3                                            0  \n",
       "4                                            0  \n",
       "5                                            0  \n",
       "6                                            0  \n",
       "7                                            0  \n",
       "8                                            0  \n",
       "9                                            0  \n",
       "10                                           0  \n",
       "11                                           0  \n",
       "\n",
       "[12 rows x 64 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_features.head(12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `score` column contains the Energy Star Score, the target for our machine learning problem. The Energy Star Score is supposed to be a comparitive measurement of the energy efficiency of a building, although we saw there may be issues with how this is calculated in part one! \n",
    "\n",
    "Here's the distribution of the Energy Star Score."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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83F++uknu/uXLVum999/P9cgdifMw3P21oAyO3nypObPn295dL1ChQoKDg7W3Llz1bJlS6WlpeW6jMG9sHf95rWVatasKel/vSw3B6/MzEydPXv2rs5rnodkHlq9+biHDx+Wt7e3SpcufVfHR8FC8IGhubm5Wda9OXLkSL6fc82aNTaL6k2ZMkXFihXT9OnTFR0draysLJtjxMXF6e2335bknK53T09PBQcH69KlS5o4caJSU1Nt2nz99dfavXu35VUW5muTZDUHwvwuspsfMTe/PkNSrmv0OKJdu3by9vZWTEyM1qxZY9NTcPXqVf373/+WJMvaSL6+vgoMDNTu3but1hHKycnR8uXLJd2YyFq3bl35+fkpNjbWsqCj2QcffKDjx4+rSZMmdp+c+qtKlSqpfv36+u6776zW15Fu9O4tWrRIW7dutZpIezfWr1+vDRs2qHz58goJCcm1nYeHh6KiohQeHq6rV69atmdlZencuXNycXGxTHA2/0z/2u5uRUREWIW77du367vvvlNgYKDlScaAgABJslnfKSoqym4Nbm5uun79ut0eIrMWLVqoZMmSiomJsQq72dnZevfdd5WWlqZ27drd0eR/FFzM8UGBdLvHy6Uba+E4MlGzdu3a6tGjhz766KN8OZ90owege/fuWrFihd566y19+OGHlt90AwICLGvJzJw5U++//74aNmyosmXL6tKlS9qzZ4+SkpLk6uqqzp07Wybi5rXRo0crMTFRcXFx6ty5s5566ilVrlxZmZmZio+PV3x8vKpUqWIZRpKkhx56SB4eHjpw4IDl3VgNGjSQr6+vtmzZorS0NNWoUUPJycmKjY2VyWRSkSJF7AYrR3l6emr27NkaPXq03nnnHX300Udq0KCB5d1mu3btUnJysnr37q2mTZtaPjdhwgQNGjRI//d//6fmzZurcuXK2rdvn3788Ue1b9/e8l6qyZMna8SIERo7dqyaNm0qPz8/HT58WAcPHpSPj4/GjRvnUJ0TJkzQwIED9dprr2njxo2qVq2akpKSFBsbq+LFi+vVV191+JpXrVplGcbKzs5WamqqDh48qF9++UWlS5fWnDlzbhmiypUrpx49emjlypXq0aOHmjRpIldXV33//ff65Zdf1L17d0vvmPmJr7Vr1+ry5ctq3759ri/WvZ0rV66oV69eatmypU6fPq3t27fL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7d+/X1euXLGZu3Pq1Cm5uLjIz89PkuTv76+DBw/q9OnTCggIsGlrbgMAAJBvwSc4ONjm8XRJ2rVrl+Lj49WhQwdVqlRJJUuWVL169bR3714dOHBATz31lKVtZmam4uPjVbVqVcvE5bp162rDhg3at2+fTfDZu3evPD09VaVKFedeHAAAKBDyNfjYk56ervj4eAUHB1vW4mnXrp0iIyMVERGhoKAgyyTlyMhIZWRkqHPnzpbPt2jRQnPnzlVUVJSeeeYZeXt7S5LWr1+vxMRE9erVSy4u9/2VZAAA4AFw315ZcSsBAQHq1auXli9frj59+qhp06Y6duyYdu7cqbp161oFH29vbw0fPlwzZsxQ79691bp1ayUnJ2vr1q3y9/dXWFjY/bsQAADwQHkgg48kDRs2TBUqVFB0dLRWr16tMmXKKDQ0VK+88oqlB8isa9eu8vLyUlRUlKKjo+Xl5aUOHTpoyJAhlh4gAAAA06VLl3LudxGFDY9D5i/ud/7ifucv7nf+4n47T6n3bR9n3930cuF9nB0AAOB+I/gAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDIPgAAADDuOvgc+TIEX311VdKT0/Py3oAAACcxqHgc+HCBY0YMUJLliyRJK1Zs0ZhYWEaP368XnzxRf3222/OrBEAACBPOBR85s+fryNHjqhGjRqSpGXLlql+/fqKjIyUj4+PFixY4NQiAQAA8oJDwefbb7/ViBEj1KxZMx05ckTJycnq2bOnatWqpT59+mj//v3OrhMAAOCeORR80tPT5ePjI0natWuX3N3d1aBBA0lSsWLFdP36dedVCAAAkEfcHGnk4+Ojn3/+WQ0aNNC2bdtUr149eXh4SJLi4uIsochRly5d0pIlS7Rz506lpKTIx8dHwcHBCg0NlZubdUmbNm3SypUrlZiYKC8vLz377LMaNGjElj47AAAgAElEQVSQihcvbnPcuLg4LVu2TMeOHZOHh4eaNm2qYcOGqXTp0ndUHwAAKJwc6vEJCQnRwoUL1b17d/3888968cUXJUljx45VdHS0unbt6vAJMzIyNHDgQH388ceqWrWqQkJCVKJECc2bN0///Oc/lZOTY2kbGRmpyZMnKzs7W926dVP16tW1cuVKjRgxQteuXbM67ubNmzV69GhdvHhRL7zwgho0aKBNmzZpwIAB+uOPPxyuDwAAFF4O9fi8+OKL8vT01MGDBzV48GC1aNFCkuTu7q5x48apS5cuDp/wgw8+0G+//aYxY8aoe/fulu2vvfaatmzZop07d6pp06Y6c+aMwsPDFRgYqPDwcEtPUHh4uJYuXaqYmBh169ZNknT58mXNmjVLvr6+ioqKkqenpySpUaNGmjZtmpYtW6aRI0c6XCMAACicHF7Hp127dho3bpxatWpl2fbWW2/dUeiRpFOnTqlChQo2vUTPPfecJOmHH36QdOOR+aysLIWFhVkNf4WFhalEiRJat26dZduWLVuUlpam0NBQS+iRpI4dOyogIEAbN25UVlbWHdUJAAAKH4d6fMzr99hjMplUvHhx+fv7q1GjRjZzdG42bdo0u9vNawGZ5+OYnxQLCgqyaufh4aHAwEDt2rVL6enp8vT0tLStX7++zXGDgoIUExOjX3/9VY8++ugtawMAAIWbQ8Hn888/17lz53T16lW5urrK29tbqampysrKkslksszLeeSRR7Rw4UKVKlXKoZPn5OTo4sWL2rZtmyIiIlSxYkX97W9/kyQlJSWpdOnSKlGihM3nKlWqJElKTExU7dq1dfLkSUmSr6+vTVvzxOvExESCDwAABufQUNfQoUPl5uam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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2f3db0c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figsize(8, 8)\n",
    "\n",
    "# Histogram of the Energy Star Score\n",
    "plt.style.use('fivethirtyeight')\n",
    "plt.hist(train_labels['score'].dropna(), bins = 100);\n",
    "plt.xlabel('Score'); plt.ylabel('Number of Buildings'); \n",
    "plt.title('ENERGY Star Score Distribution');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Evaluating and Comparing Machine Learning Models\n",
    "\n",
    "In this section we will build, train, and evalute several machine learning methods for our supervised regression task. The objective is to determine which model holds the most promise for further development (such as hyperparameter tuning). \n",
    "\n",
    "We are comparing models using the __mean absolute error__. A baseline model that guessed the median value of the score was off by an __average of 25 points__. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imputing Missing Values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Standard machine learning models cannot deal with missing values, and which means we have to find a way to fill these in or disard any features with missing values. Since we already removed features with more than 50% missing values in the first part, here we will focus on filling in these missing values, a process known as [imputation](https://en.wikipedia.org/wiki/Imputation_(statistics)). There are a number of methods for imputation but here we will use the relatively simple method of replacing missing values with the median of the column. ([Here is a more thorough discussion on imputing missing values](http://www.stat.columbia.edu/~gelman/arm/missing.pdf))\n",
    "\n",
    "In the code below, we create a [Scikit-learn `Imputer` object](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Imputer.html) to fill in missing values with the median of the column. Notice that we train the imputer (using the `Imputer.fit` method) on the training data but not the testing data. We then transform (using `Imputer.transform`) both the training data and testing data. This means that the missing values in the testing set are filled in with the median value of the corresponding columns in the training set. [We have to do it this way](https://stackoverflow.com/a/46692001) rather than because at deployment time, we will have to impute the missing values in new observations based on the previous training data. This is one way to avoid the problem known as [data leakage](https://www.kaggle.com/dansbecker/data-leakage) where information from the testing set \"leaks\" into the training process."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create an imputer object with a median filling strategy\n",
    "imputer = Imputer(strategy='median')\n",
    "\n",
    "# Train on the training features\n",
    "imputer.fit(train_features)\n",
    "\n",
    "# Transform both training data and testing data\n",
    "X = imputer.transform(train_features)\n",
    "X_test = imputer.transform(test_features)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing values in training features:  0\n",
      "Missing values in testing features:   0\n"
     ]
    }
   ],
   "source": [
    "print('Missing values in training features: ', np.sum(np.isnan(X)))\n",
    "print('Missing values in testing features:  ', np.sum(np.isnan(X_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(array([], dtype=int64), array([], dtype=int64))\n",
      "(array([], dtype=int64), array([], dtype=int64))\n"
     ]
    }
   ],
   "source": [
    "# Make sure all values are finite\n",
    "print(np.where(~np.isfinite(X)))\n",
    "print(np.where(~np.isfinite(X_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After imputation, all of the features are real-valued. For more sophisticated methods of imputation (although median values usually works well) check out [this article](https://www.tandfonline.com/doi/full/10.1080/1743727X.2014.979146)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Scaling Features\n",
    "\n",
    "The final step to take before we can build our models is to [scale the features](https://en.wikipedia.org/wiki/Feature_scaling). This is necessary because features are in different units, and we want to normalize the features so the units do not affect the algorithm. [Linear Regression and Random Forest do not require feature scaling](https://stats.stackexchange.com/questions/121886/when-should-i-apply-feature-scaling-for-my-data), but other methods, such as support vector machines and k nearest neighbors, do require it because they take into account the Euclidean distance between observations. For this reason, it is a best practice to scale features when we are comparing multiple algorithms. \n",
    "\n",
    "There are two ways to [scale features](http://scikit-learn.org/stable/auto_examples/preprocessing/plot_scaling_importance.html):\n",
    "\n",
    "1. For each value, subtract the mean of the feature and divide by the standard deviation of the feature. This is known as standardization and results in each feature having a mean of 0 and a standard deviation of 1.\n",
    "2. For each value, subtract the minimum value of the feature and divide by the maximum minus the minimum for the feature (the range). This assures that all the values for a feature are between 0 and 1 and is called scaling to a range or normalization.\n",
    "\n",
    "Here is a good article about [normalization and standardization](https://machinelearningmastery.com/normalize-standardize-machine-learning-data-weka/).\n",
    "\n",
    "As with imputation, when we train the scaling object, we want to use only the training set. When we transform features, we will transform both the training set and the testing set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create the scaler object with a range of 0-1\n",
    "scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "\n",
    "# Fit on the training data\n",
    "scaler.fit(X)\n",
    "\n",
    "# Transform both the training and testing data\n",
    "X = scaler.transform(X)\n",
    "X_test = scaler.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert y to one-dimensional array (vector)\n",
    "y = np.array(train_labels).reshape((-1, ))\n",
    "y_test = np.array(test_labels).reshape((-1, ))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Models to Evaluate\n",
    "\n",
    "We will compare five different machine learning models using the great [Scikit-Learn library](http://scikit-learn.org/stable/):\n",
    "\n",
    "1. Linear Regression\n",
    "2. Support Vector Machine Regression\n",
    "3. Random Forest Regression\n",
    "4. Gradient Boosting Regression\n",
    "5. K-Nearest Neighbors Regression\n",
    "\n",
    "Again, here I'm focusing on implementation rather than explaining how these work. In addition to Hands-On Machine Learning, another great resource (this one is free online) for reading about machine learning models is [An Introduction to Statistical Learning](http://www-bcf.usc.edu/~gareth/ISL/).\n",
    "\n",
    "To compare the models, we are going to be mostly using the Scikit-Learn defaults for the model hyperparameters. Generally these will perform decently, but should be optimized before actually using a model. At first, we just want to determine the baseline performance of each model, and then we can select the best performing model for further optimization using hyperparameter tuning. Remember that the default hyperparameters will get a model up and running, but nearly always should be adjusted using some sort of search to find the best settings for your problem! \n",
    "\n",
    "Here is what the Scikit-learn documentation [says about the defaults](https://arxiv.org/abs/1309.0238):\n",
    "\n",
    "    __Sensible defaults__: Whenever an operation requires a user-defined parameter,\n",
    "    an appropriate default value is defined by the library. The default value\n",
    "    should cause the operation to be performed in a sensible way (giving a baseline\n",
    "    solution for the task at hand.)\n",
    "\n",
    "One of the best parts about scikit-learn is that all models are implemented in an identical manner: once you know how to build one, you can implement an extremely diverse array of models. Here we will implement the entire training and testing procedures for a number of models in just a few lines of code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to calculate mean absolute error\n",
    "def mae(y_true, y_pred):\n",
    "    return np.mean(abs(y_true - y_pred))\n",
    "\n",
    "# Takes in a model, trains the model, and evaluates the model on the test set\n",
    "def fit_and_evaluate(model):\n",
    "    # Train the model\n",
    "    model.fit(X, y)\n",
    "    \n",
    "    # Make predictions and evalute\n",
    "    model_pred = model.predict(X_test)\n",
    "    model_mae = mae(y_test, model_pred)\n",
    "    \n",
    "    return model_mae"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear Regression Performance on the test set: MAE = 13.4651\n"
     ]
    }
   ],
   "source": [
    "lr = LinearRegression()\n",
    "lr_mae = fit_and_evaluate(lr)\n",
    "\n",
    "print('Linear Regression Performance on the test set: MAE = %0.4f' % lr_mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Support Vector Machine Regression Performance on the test set: MAE = 10.9337\n"
     ]
    }
   ],
   "source": [
    "svm = SVR(C = 1000, gamma = 0.1)\n",
    "svm_mae = fit_and_evaluate(svm)\n",
    "\n",
    "print('Support Vector Machine Regression Performance on the test set: MAE = %0.4f' % svm_mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random Forest Regression Performance on the test set: MAE = 10.0147\n"
     ]
    }
   ],
   "source": [
    "random_forest = RandomForestRegressor(random_state=60)\n",
    "random_forest_mae = fit_and_evaluate(random_forest)\n",
    "\n",
    "print('Random Forest Regression Performance on the test set: MAE = %0.4f' % random_forest_mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Gradient Boosted Regression Performance on the test set: MAE = 10.0132\n"
     ]
    }
   ],
   "source": [
    "gradient_boosted = GradientBoostingRegressor(random_state=60)\n",
    "gradient_boosted_mae = fit_and_evaluate(gradient_boosted)\n",
    "\n",
    "print('Gradient Boosted Regression Performance on the test set: MAE = %0.4f' % gradient_boosted_mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K-Nearest Neighbors Regression Performance on the test set: MAE = 13.0131\n"
     ]
    }
   ],
   "source": [
    "knn = KNeighborsRegressor(n_neighbors=10)\n",
    "knn_mae = fit_and_evaluate(knn)\n",
    "\n",
    "print('K-Nearest Neighbors Regression Performance on the test set: MAE = %0.4f' % knn_mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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cDDe3t44Ozuzc+dOJk2axMWLFzl58iS///67MVfW3t6ey5cvc+3atSfea61atYiLi2PChAmEh4ezaNEiTpw48cQ2EBERkdfP336YHiBLlizMmjWLZcuWsXjxYi5evIi1tTUlS5ZkyJAh1KlTJ81jhw4dyrhx42jRogUuLi40atQIW1tbgoOD8fT0pF+/fkyYMIEePXqQLVs2Pv30U6amscJv5MiRTJw40Vi44+7ubjyk/kmKFy9O+fLl6dSpE19//TVeXl4pymzfvp3t27cD/3vGacOGDfHx8QEePrJh8uTJTJ06laVLl5I3b1569uxpfE1YtWrViIyMxM/Pjxs3blCiRAmmTZtGsf//eIqJEycyefJk2rRpg52dHTVr1qRjx44A1K9fnx07dtC6dWs2b96c7r1my5aNqVOnMm7cONq0aUPZsmWpW7fuU7WDiIiIvF6sbt26paeZS4bjnD272VUQEXltDalUiX7///nS8j9awJS2F2mbf8QwvYiIiIj8PSmMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhp/hHfTS//PEMqVTK7ChlOTEwM9vb2ZlcjQ1LbpE1tkza1TepiYmLIVqyY2dWQ14jCqGRI+k7klPSdyGlT26RNbZM2tU3q1C7yqmmYXkRERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMY2t2BURSM75+fbOrkOHExMRgb29vdjUyJLVN2tQ2aVPbpC4mJoZs775Lr6lTza6KvCYURiVD+vrXX82ugojIa2uIQrq8QhqmFxERERHTKIyKiIiIiGkURkVERETENAqjIiIiImIahVERERERMY3C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CbRu3ZoNGzYwYMAAbt++zZUrV554rg8++IBhw4axePFiPv/8c3LlykWxYsWM/S1btqRJkyZ8++23tG3blitXrjB79mzeeOONv/IWgYePrho/fjwAHTp0YNCgQXh4eDB48OA0j2nTpg1NmjRh/PjxtGrVivPnzzN16lRy5cqFi4sL48aNIzAwkBYtWjB8+HCaNm1qzJlt3LgxBw4coFevXn/5vYmIiMjfh9WtW7f0NHLJcJzT6J0VEZG/3pBKlei3caPZ1chwtIApbS/SNuoZFRERERHTKIyKiIiIiGkURkVERETENAqjIiIiImIahVERERERMY3CqIiIiIiYRmFUREREREyjMCoiIiIiplEYFRERERHTKIyKiIiIiGlsza6ASGqGVKpkdhUynJiYGOzt7c2uRoaktkmb2iZtapvUxcTEkK1YMbOrIa8RhVHJkPSdyCnpO5HTprZJm9ombWqb1Kld5FXTML2IiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImMbW7AqIpGZ8/fpmVyHDiYmJwd7e3uxqZEhqm7SpbdKmtkldRmiXTMWK0WvqVFPrIK+OwqhkSF//+qvZVRAREZMMMbsC8kppmF5ERERETKMwKiIiIiKmURgVEREREdMojIqIiIiIaRRGRURERMQ0CqMiIiIiYhqFURERERExjcKoiIiIiJhGYVRERERETKMwKiIiIiKmURgVEREREdM8MYzGx8czb948mjRpQqVKlahfvz5jxowhKirqVdTvuQQHB3P06NEU2+/du4enpycrV65M9bjvv/+edu3avfD1Dx06xPnz51/4PMnc3d1xd3cnIiIixb5Vq1bh7u7OrFmzXvg6vr6+6Z7H3d2dgwcPvvB1RERERJI9MYzOnDmT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Ny89e/akUaNGT2r6VJUrV46EhIQ05+r27duX0aNH06ZNG7Jnz06NGjVwdHQ0ekPbtWtHdHQ0Q4cO5cGDB5QvX55+/fo9V13SYmNjw4QJE5g4cSI+Pj7Y2dlRtWpVevXq9VKvIyIiIn9/Vrdu3frLv0bJ3d2d6dOnGyu8H3X48GG6dOnC3r17tcpaDM7/fwqIiIi8foZUqkS/jRvNrkYKWsCUthdpmyc+Z1RERERE5K+iMCoiIiIipnkl4+LJXyGZmg8//DDd/SIiIiLyz6WeURERERExjcKoiIiIiJhGYVRERERETKMwKiIiIiKmURgVEREREdMojIqIiIiIaRRGRURERMQ0+v5NyZCGVKpkdhUynJiYGOzt7c2uRoaktkmb2iZtapvUZYR2yVSsmKnXl1dLYVQypIz4ncRm03cip01tkza1TdrUNqlTu8irpmF6ERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNwqiIiIiImEZhVERERERMozAqIiIiIqZRGBURERER0yiMioiIiIhpFEZFRERExDQKoyIiIiJiGoVRERERETGNrdkVEEnN+Pr1za5ChhMTE4O9vb3Z1ciQ1DZpU9ukTW2TOrVL2jJa22QqVoxeU6eaXY0XpjAqGdLXv/5qdhVEREQytCFmV+Al0TC9iIiIiJhGYVRERERETKMwKiIiIiKmURgVEREREdMojIqIiIiIaRRGRURERMQ0CqMiIiIiYhqFURERERExjcKoiIiIiJhGYVRERERETKMwKiIiIiKmeaVh1N3dnYMHD1psO3r0KJ6enkyYMCHN47y9venQoQNJSUkW2w8fPoy7uzvx8fF/SX1fRHBwMEePHk1136VLl3B3d2fatGkp9vn5+fHFF1881TVeZllfX19mzZr1VOcSEREReVlM7RkNCQmhb9++1KxZk759+6ZbNigoiHXr1r2imr24fv36ER4enm6ZH3/8kfPnzz/3Ndq0aZNuiBcRERHJ6EwLoxEREfTs2RN3d3cGDx6MlZVVuuXz5cvH9OnTuXXr1iuq4V8vV65cfPfdd899vIODA87Ozi+xRiIiIiKvlilhNCoqih49elC8eHFGjx6NjY3NE49p1aoVjo6OqQ5tJ4uOjmbEiBF4eXlRp04dxowZw71794z9u3fvpm3btnh4eODl5cWgQYOIjo4GHg5j9+3bly5dulC9enX27dtHXFwckyZNolatWtSoUYOBAwdy48YN43wrV66kUaNGeHh40KpVK3bv3g08HPK+fPkyY8aMYeTIkWnWt1evXhw/fpyNGzemWeb8+fN06dIFT09PmjRpwtKlS43pCo8Pve/fv5+WLVvi6elJz549GT9+vMX14+PjmTBhAl5eXtSuXRt/f3+La0VGRtKlSxc8PDzo0KEDFy5cMPbduXOHMWPG/L/27jyqqnL/44H18dwAACAASURBVPibSVAScCwkQEUtXYpDRSkikmMOOeVQajlrlInmGE7gkIoCDpSiqZkzlhOWpOKU420wKc0RUNOcCkNjht8f/DzXo6BYXjfp57XWWauz97Of8z1f7qVPez97Q/PmzfHz82PMmDFcu3YNyF0u0apVK0JCQvDz8yMyMpKLFy8yaNAg/Pz8aNy4McHBwfz111/5fk8RERF5PD30MHrjxg0GDRrExYsXmTBhAjY2NgU6ztbWliFDhhAdHc2PP/6Y55gJEyZw7do1IiMjCQsLIzExkeDgYCD3TOzIkSNp3749q1ev5sMPP+Tbb7/liy++MB2/e/du/Pz8mDt3Lp6ennz00UfExcURGhrKvHnzyMnJYciQIeTk5HDs2DFCQ0MZPHgwUVFRNG7cmA8++IDk5GSmTp1K2bJlGTRo0F2XH1SqVImOHTsye/ZskpOT79ifmprKoEGDqFGjBsuWLWPo0KGsWLGC1atX3zH2119/ZejQoTRq1IilS5dSrVo11qxZYzbm559/BuCzzz6jR48ezJ49m5MnT5r2b9q0CT8/P5YuXYqLiwsDBw40rccdPnw4x48fZ8aMGURERJCYmMj48eNNx166dInr16/z2WefmYKptbU1ixcvZvbs2cTFxbFo0aJ8eyEiIiKPJ+uH/YHTpk2jdOnS2NjY8Omnn/Lee+8V+FhfX1/q16/P1KlTWbJkidm+c+fOsWPHDr7++mvTpevx48fTpk0bLl68SFZWFkOGDKFdu3YAlCtXDi8vL06fPm2aw9HRkU6dOgG5QTAqKoqFCxfyzDPPmOZr0qQJhw4dIikpCQsLC5ydnXF2dqZHjx5Uq1YNGxsb7OzssLKywt7enieeeOKu36l///5s27aNjz76iBEjRpjti4mJwcHBAX9/fwDc3NwYMGAAn3zyCZ07dzYbu379ep555hn69Oljmvf2m8VKlSrFkCFDsLS05PXXX2fBggWcPHmSSpUqmfp78/uPHDmSli1bsm/fPp566im+//57Vq1aRYUKFYDc4N+xY0ezNa9vvvkmTz/9NJB7k1blypUpV64cNjY2TJ069Z5LMURERKTgUlJSOHHihNFlmNxaS+XKlQt83EMPow4ODsyePZutW7eaLhnXqFEDyL2zPiAgwDS2R48e9OzZ0+z4999/n86dO7Nq1SqeffZZ0/b4+HhycnJ49dVX7/jMxMREvLy8KFKkCAsXLuT06dOmV9OmTU3jnJ2dTf/866+/kpGRQb9+/czmSk9P58yZMzRr1oyaNWvSrVs3PDw88PHxoU2bNtjZ2d1XP+zt7QkICGDMmDG0bt3abF9CQgLx8fH4+vqatmVnZ5ORkUFGRobZ2BMnTlCtWjWzbdWrV+fPP/80+36Wlv89Gf7EE0+QlpZmen/r8fb29ri5uZGQkEBqair29vamIArg7u6Og4MDCQkJODk5mea/qX///gQGBrJr1y5efPFF/Pz8aNKkyX31RkRERPJXtGjR+wp9/0snTpz427U89DAaEBCAk5MTHTp0ICYmhuDgYJYuXYqtrS1Vq1Zl6dKlprEODg53HF+uXDl69uzJggULzM4kZmVlUbRoUbPjbypdujTHjx+nb9+++Pj4UKtWLd544w1WrFhhNs7W1tZsPoC5c+fecXazRIkS2NnZERERwaFDh/jmm2+IjY0lKiqKyMjI+/5hNGnShA0bNjB16lTq1atnVkOdOnUYOXLkHcfcvs7Wysrqjkdf3f4+r7W5t465/cxldnY2NjY2FClSJM+6s7KyyM7ONr2/dZyvry8bN25k586d7N27lwkTJrB//37GjRuX51wiIiLyeHroa0ZvBiILCws++OADLly4wLx58wCws7PD1dXV9MrvTvHu3btTunRps+diuru7k5KSQnZ2tul4gPDwcG7cuMFXX32Fp6cnEydO5LXXXqNatWqcPXv2jsB2k4uLC1ZWViQlJZnmK1GiBOHh4Vy4cIHDhw+zcOFCateuzcCBA1m9ejUlS5Zk7969f6svw4YN49SpU3z55ZembW5ubpw5cwZnZ2dTDcePH2fJkiVmZzgBKlasyC+//GK27fb393LrJffk5GTOnDlD+fLlKV++PDdu3CA+Pt60//Tp09y4cQN3d/c85/r444+5dOkSbdu2Zdq0aQQGBrJ169b7qkdEREQefYY+Z7RChQr06NGD5cuXc/jw4QIfZ2Njw7Bhw7hw4YLZXHXr1mXcuHH89NNPHD9+nPHjx/P7779TunRpHB0dOX36ND/99BNnzpwhPDycI0eO3HG5+yZ7e3vatGnD9OnT+c9//kNCQgLjx4/n5MmTuLq6Ymdnx4IFC/jiiy84f/48u3bt4tKlS1StWhXIfexSYmKi6Y7ze3Fzc6Nbt25m3+mVV14hIyODSZMmER8fz4EDBwgJCcnzjHG7du04evQoixYtIjExkcWLF3Po0KH7Wqe5ZcsW1q5dy+nTp5kwYQJPP/00Xl5euLu7U79+fYKCgjhy5AhHjhwhKCiImjVrUqVKlTznSkhIICQkhGPHjpGYmEhsbKzZsgoRERERKAR/DrRHjx6UL1+eCRMmkJqaWuDjvLy8zNZ7AgQFBeHq6srAgQMZMGAAZcqUISQkBIDOnTvj6enJwIED6dOnDxcuXKBPnz4cP348388ICAjgpZdeIjAwkB49epCWlsasWbOws7OjSpUqjBs3jpUrV9KpUyfCw8NNz00F6NixI2vXrmXy5MkF/k49e/bExcXF9N7e3p6ZM2dy4cIF3nzzTYKCgmjZsiVvv/32Hcc6OzszZcoUoqOjeeONN/jxxx/x9fUt8NMKALp06cLGjRt58803SU5OJiQkxHQGdty4cbi6uvLOO+8wcOBAKlasyIwZM/Kda8SIEZQpU4Z33nmH7t27k5WVxYQJEwpci4iIiDweLJKSkvK+Ti3/KqdOnSIzM9N05z/A4MGDqVq16h03Yf0bOP7/TVEiIiKSt9He3gy7y7PKH6Z/cgOT4WdG5cE4d+4c77zzDgcOHODChQusW7eO//znP/j5+RldmoiIiEi+Hvrd9PK/4evry6lTp5g4cSJ//PEHbm5uTJo0qdA88kFEREQkLwqjj5BevXrRq1cvo8sQERERKTBdphcRERERwyiMioiIiIhhFEZFRERExDAKoyIiIiJiGIVRERERETGMwqiIiIiIGEZhVEREREQMo+eMSqE02tvb6BIKnZSUFIoWLWp0GYWSepM/9SZ/6k3e1Jf8Fbbe2Hh4GF3CA6EwKoVSYflbu4XJP/m7v4869SZ/6k3+1Ju8qS/5U2/+N3SZXkREREQMozAqIiIiIoZRGBURERERwyiMioiIiIhhFEZFRERExDAKoyIiIiJiGIVRERERETGMwqiIiIiIGEZhVEREREQMozAqIiIiIoZRGBURERERwyiMioiIiIhhFEZFRERExDAKoyIiIiJiGIVRERERETGMwqiIiIiIGEZhVEREREQMozAqIiIiIoZRGBURERERwyiMioiIiIhhFEZFRERExDAKoyIiIiJiGIVRERERETGMwqiIiIiIGEZhVEREREQMozAqIiIiIoZRGBURERERwyiMioiIiIhhFEZFRERExDAKoyIiIiJiGIVRERERETGMwqiIiIiIGEZhVEREREQMY210ASJ5CWnZ0ugSCp2UlBSKFi1qdBmFknqTP/Umf+pN3tSX/D1qvbHx8CBg1iyjy1AYlcJp4p49RpcgIiLySBttdAH/T5fpRURERMQwCqMiIiIiYhiFURERERExjMKoiIiIiBhGYVREREREDKMwKiIiIiKGURgVEREREcMojIqIiIiIYRRGRURERMQwCqMiIiIiYhiFURERERExzL8yjHp5eXHw4ME890VHR9OqVauHXFHevvvuO7y8vMxe9erVo02bNkRGRhpd3n0rTL0VERGRR4O10QU8aI0bN8bb29voMsxER0djaZmb+1NTU9m5cyezZs3CxcWFli1bGlxdwRXG3oqIiMi/2yMXRu3s7LCzszO6DDMlS5bE2vq/re7atSv79u1jx44d/6owWhh7KyIiIv9uj1wYjY6OZu7cuURHR/Pdd98xbtw4evfuzSeffEJqaire3t6MGjXKFKp27NjBxx9/zPnz5ylfvjz+/v7UrVsXgBs3bhAWFsbu3btJTk6mXLly+Pv78/LLLwO5ywV69erFF198QeXKlYmIiChwnTY2NlhZWZneHzp0iPDwcE6dOkW5cuV46623aNGihWn/8uXLWbZsGX/99RctW7bk1KlTtGzZklatWjFgwAA8PDzYt28faWlpLFu2jLS0NEJCQjh48CCOjo40a9aM/v37Y2NjQ2ZmJtOn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RP7tdGZURERERAyjMCoiIiIihlEYFRERERHDKIyKiIiIiGEURkVERETEMAqjIiIiImIYhVERERERMYyeMyqF0mhvb6NLKHRSUlIoWrSo0WUUSupN/tSb/Kk3eVNf8veo9cbGw8PoEgCFUSmkHtTfyn2U/JO/+/uoU2/yp97kT73Jm/qSP/Xmf0OX6UVERETEMAqjIiIiImIYhVERERERMYzCqIiIiIgYRmFURERERAyjMCoiIiIihlEYFRERERHDKIyKiIiIiGEURkVERETEMAqjIiIiImIYhVERERERMYzCqIiIiIgYRmFURERERAyjMCoiIiIihlEYFRERERHDWCQlJeUYXYSIiIiIPJ50ZlREREREDKMwKiIiIiKGURgVEREREcMojIqIiIiIYRRGRURERMQwCqMiIiIiYhiFURERERExjMKoFArp6elMnjyZRo0a0bx5c5YsWWJ0SYXCuXPnGDJkCI0aNaJVq1aEh4eTlpZmdFmFzsSJExkwYIDRZRQamZmZhIWF0aRJExo3bsyUKVNIT083uqxC4c8//2Ts2LE0btyYli1bMmfOHLKysowuy1Dp6el06dKFgwcPmrZdu3aNkSNH4ufnR5s2bYiOjjawQuPk1ZtffvmFAQMG0LBhQ9q0acPixYvJzs42sEpj5NWbWw0cOJCgoKACzaUwKoXCrFmzOHz4MHPmzGHUqFEsWrSIr7/+2uiyDJWRkcH7779PkSJFWLBgAcHBwezcuZOPP/7Y6NIKlYMHD7JhwwajyyhUZs2axY4dO5g+fTqhoaHs27ePTz75xOiyCoVp06Zx6dIl5s2bR1BQEJs2bWL58uVGl2WYtLQ0Ro8ezenTp822BwcHc+3aNebPn0/v3r2ZMmUKhw8fNqhKY+TVm2vXrhEQEICHhweffvopQ4cOZdmyZURFRRlY6cOX3/9ubtqwYQMHDhwo8HwKo2K4lJQU1q9fz5AhQ6hatSq+vr5069btsfs/9+1+/vlnzp49y9ixY6lQoQJ16tShf//+bN682ejSCo2UlBQ+/PBDatasaXQphUZycjKff/45H3zwATVr1sTT05O+ffvyyy+/GF1aobBnzx66dOmCh4cHzz//PM2aNePbb781uixDnD59ml69enHu3Dmz7efOnWP37t188MEHVKpUiVdffZXmzZuzZs0agyp9+PLrzd69e7G2tub9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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2f024db00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.style.use('fivethirtyeight')\n",
    "figsize(8, 6)\n",
    "\n",
    "# Dataframe to hold the results\n",
    "model_comparison = pd.DataFrame({'model': ['Linear Regression', 'Support Vector Machine',\n",
    "                                           'Random Forest', 'Gradient Boosted',\n",
    "                                            'K-Nearest Neighbors'],\n",
    "                                 'mae': [lr_mae, svm_mae, random_forest_mae, \n",
    "                                         gradient_boosted_mae, knn_mae]})\n",
    "\n",
    "# Horizontal bar chart of test mae\n",
    "model_comparison.sort_values('mae', ascending = False).plot(x = 'model', y = 'mae', kind = 'barh',\n",
    "                                                           color = 'red', edgecolor = 'black')\n",
    "\n",
    "# Plot formatting\n",
    "plt.ylabel(''); plt.yticks(size = 14); plt.xlabel('Mean Absolute Error'); plt.xticks(size = 14)\n",
    "plt.title('Model Comparison on Test MAE', size = 20);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Depending on the run (the exact results change slighty each time), the gradient boosting regressor performs the best followed by the random forest. I have to admit that this is not the most fair comparison because we are using mostly the default hyperparameters. Especially with the Support Vector Regressor, the hyperparameters have a significant influence on performance. (the random forest and gradient boosting methods are great for starting out because the performance is less dependent on the model settings). Nonetheless, from these results, we can conclude that machine learning is applicable because all the models significantly outperform the baseline!\n",
    "\n",
    "From here, I am going to concentrate on optimizing the best model using hyperparamter tuning. Given the results here, I will concentrate on using the `GradientBoostingRegressor`. This is the Scikit-Learn implementation of [Gradient Boosted Trees](http://www.ccs.neu.edu/home/vip/teach/MLcourse/4_boosting/slides/gradient_boosting.pdf) which has won many [Kaggle competitions](http://matthewemery.ca/Why-Kagglers-Love-XGBoost/) in the past few years. The Scikit-Learn version is generally slower than the `XGBoost` version, but here we'll stick to Scikit-Learn because the syntax is more familiar. [Here's a guide](https://www.kaggle.com/dansbecker/learning-to-use-xgboost/code) to using the implementation in the `XGBoost` package."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Optimization \n",
    "\n",
    "In machine learning, optimizing a model means finding the best set of hyperparameters for a particular problem. \n",
    "\n",
    "## Hyperparameters\n",
    "\n",
    "First off, we need to understand what [model hyperparameters are in contrast to model parameters](https://machinelearningmastery.com/difference-between-a-parameter-and-a-hyperparameter/) :\n",
    "\n",
    "* Model __hyperparameters__ are best thought of as settings for a machine learning algorithm that are tuned by the data scientist before training. Examples would be the number of trees in the random forest, or the number of neighbors used in K Nearest Neighbors Regression. \n",
    "* Model __parameters__ are what the model learns during training, such as the weights in the linear regression.\n",
    "\n",
    "We as data scientists control a model by choosing the hyperparameters, and these choices can have a significant effect on the final performance of the model (although usually not as great of an effect as getting more data or engineering features). \n",
    "\n",
    "[Tuning the model hyperparameters](http://scikit-learn.org/stable/modules/grid_search.html) controls the balance of under vs over fitting in a model. We can try to correct for under-fitting by making a more complex model, such as using more trees in a random forest or more layers in a deep neural network. A model that underfits has high bias, and occurs when our model does not have enough capacity (degrees of freedom) to learn the relationship between the features and the target. We can try to correct for overfitting by limiting the complexity of the model and applying regularization. This might mean decreasing the degree of a polynomial regression, or adding dropout layers to a deep neural network. A model that overfits has high variance and in effect has memorized the training set. Both underfitting and overfitting lead to poor generalization performance on the test set. \n",
    "\n",
    "The problem with choosing the hyperparameters is that no set will work best across all problems. Therefore, for every new dataset, we have to find the best settings. This can be a time-consuming process, but luckily there are several options for performing this procedure in Scikit-Learn. Even better, new libraries, such as [TPOT](https://epistasislab.github.io/tpot/) by epistasis labs, is aiming to do this process automatically for you! For now, we will stick to doing this manually (sort of) in Scikit-Learn, but stay tuned for an article on automatic model selection! "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Hyperparameter Tuning with Random Search and Cross Validation\n",
    "\n",
    "We can choose the best hyperparameters for a model through random search and cross validation. \n",
    "\n",
    "* Random search refers to the method in which we choose hyperparameters to evaluate: we define a range of options, and then randomly select combinations to try. This is in contrast to grid search which evaluates every single combination we specify. Generally, random search is better when we have limited knowledge of the best model hyperparameters and we can use random search to narrow down the options and then use grid search with a more limited range of options. \n",
    "* Cross validation is the method used to assess the performance of the hyperparameters. Rather than splitting the training set up into separate training and validation sets which reduces the amount of training data we can use, we use K-Fold Cross Validation. This means dividing the training data into K folds, and then going through an iterative process where we first train on K-1 of the folds and then evaluate performance on the kth fold. We repeat this process K times so eventually we will have tested on every example in the training data with the key that each iteration we are testing on data that we __did not train on__.  At the end of K-fold cross validation, we take the average error on each of the K iterations as the final performance measure and then train the model on all the training data at once. The performance we record is then used to compare different combinations of hyperparameters. \n",
    "\n",
    "A picture of k-fold cross validation using k = 5 is shown below:\n",
    "\n",
    "![image](images/kfold_cv.png)\n",
    "\n",
    "Here we will implement random search with cross validation to select the optimal hyperparameters for the gradient boosting regressor. We first define a grid then peform an iterative process of: randomly sample a set of hyperparameters from the grid, evaluate the hyperparameters using 4-fold cross-validation, and then select the hyperparameters with the best performance. \n",
    "\n",
    "Of course we don't actually do this iteration ourselves, we let Scikit-Learn and `RandomizedSearchCV` do the process for us! "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Loss function to be optimized\n",
    "loss = ['ls', 'lad', 'huber']\n",
    "\n",
    "# Number of trees used in the boosting process\n",
    "n_estimators = [100, 500, 900, 1100, 1500]\n",
    "\n",
    "# Maximum depth of each tree\n",
    "max_depth = [2, 3, 5, 10, 15]\n",
    "\n",
    "# Minimum number of samples per leaf\n",
    "min_samples_leaf = [1, 2, 4, 6, 8]\n",
    "\n",
    "# Minimum number of samples to split a node\n",
    "min_samples_split = [2, 4, 6, 10]\n",
    "\n",
    "# Maximum number of features to consider for making splits\n",
    "max_features = ['auto', 'sqrt', 'log2', None]\n",
    "\n",
    "# Define the grid of hyperparameters to search\n",
    "hyperparameter_grid = {'loss': loss,\n",
    "                       'n_estimators': n_estimators,\n",
    "                       'max_depth': max_depth,\n",
    "                       'min_samples_leaf': min_samples_leaf,\n",
    "                       'min_samples_split': min_samples_split,\n",
    "                       'max_features': max_features}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We selected 6 different hyperparameters to tune in the gradient boosting regressor. These all will affect the model in different ways that are hard to determine ahead of time, and the only method for finding the best combination for a specific problem is to test them out! To read about the hyperparameters, I suggest taking a look at the [Scikit-Learn documentation](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor). For now, just know that we are trying to find the best combination of hyperparameters and because there is no theory to tell us which will work best, we just have to evaluate them, like runnning an experiment! \n",
    "\n",
    "In the code below, we create the Randomized Search Object passing in the following parameters:\n",
    "\n",
    "* `estimator`: the model\n",
    "* `param_distributions`: the distribution of parameters we defined\n",
    "* `cv` the number of folds to use for k-fold cross validation\n",
    "* `n_iter`: the number of different combinations to try\n",
    "* `scoring`: which metric to use when evaluating candidates\n",
    "* `n_jobs`: number of cores to run in parallel (-1 will use all available)\n",
    "* `verbose`: how much information to display (1 displays a limited amount) \n",
    "* `return_train_score`: return the training score for each cross-validation fold\n",
    "* `random_state`: fixes the random number generator used so we get the same results every run\n",
    "\n",
    "The Randomized Search Object is trained the same way as any other scikit-learn model. After training, we can compare all the different hyperparameter combinations and find the best performing one. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create the model to use for hyperparameter tuning\n",
    "model = GradientBoostingRegressor(random_state = 42)\n",
    "\n",
    "# Set up the random search with 4-fold cross validation\n",
    "random_cv = RandomizedSearchCV(estimator=model,\n",
    "                               param_distributions=hyperparameter_grid,\n",
    "                               cv=4, n_iter=25, \n",
    "                               scoring = 'neg_mean_absolute_error',\n",
    "                               n_jobs = -1, verbose = 1, \n",
    "                               return_train_score = True,\n",
    "                               random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 4 folds for each of 25 candidates, totalling 100 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:  7.9min finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomizedSearchCV(cv=4, error_score='raise',\n",
       "          estimator=GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n",
       "             learning_rate=0.1, loss='ls', max_depth=3, max_features=None,\n",
       "             max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "             min_impurity_split=None, min_samples_leaf=1,\n",
       "             min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "             n_estimators=100, presort='auto', random_state=42,\n",
       "             subsample=1.0, verbose=0, warm_start=False),\n",
       "          fit_params=None, iid=True, n_iter=25, n_jobs=-1,\n",
       "          param_distributions={'loss': ['ls', 'lad', 'huber'], 'n_estimators': [100, 500, 900, 1100, 1500], 'max_depth': [2, 3, 5, 10, 15], 'min_samples_leaf': [1, 2, 4, 6, 8], 'min_samples_split': [2, 4, 6, 10], 'max_features': ['auto', 'sqrt', 'log2', None]},\n",
       "          pre_dispatch='2*n_jobs', random_state=42, refit=True,\n",
       "          return_train_score=True, scoring='neg_mean_absolute_error',\n",
       "          verbose=1)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Fit on the training data\n",
    "random_cv.fit(X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Scikit-learn uses the negative mean absolute error for evaluation because it wants a metric to maximize. Therefore, a better score will be closer to 0. We can get the results of the randomized search into a dataframe, and sort the values by performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean_fit_time</th>\n",
       "      <th>mean_score_time</th>\n",
       "      <th>mean_test_score</th>\n",
       "      <th>mean_train_score</th>\n",
       "      <th>param_loss</th>\n",
       "      <th>param_max_depth</th>\n",
       "      <th>param_max_features</th>\n",
       "      <th>param_min_samples_leaf</th>\n",
       "      <th>param_min_samples_split</th>\n",
       "      <th>param_n_estimators</th>\n",
       "      <th>params</th>\n",
       "      <th>rank_test_score</th>\n",
       "      <th>split0_test_score</th>\n",
       "      <th>split0_train_score</th>\n",
       "      <th>split1_test_score</th>\n",
       "      <th>split1_train_score</th>\n",
       "      <th>split2_test_score</th>\n",
       "      <th>split2_train_score</th>\n",
       "      <th>split3_test_score</th>\n",
       "      <th>split3_train_score</th>\n",
       "      <th>std_fit_time</th>\n",
       "      <th>std_score_time</th>\n",
       "      <th>std_test_score</th>\n",
       "      <th>std_train_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>29.291088</td>\n",
       "      <td>0.035073</td>\n",
       "      <td>-8.998761</td>\n",
       "      <td>-6.893790</td>\n",
       "      <td>lad</td>\n",
       "      <td>5</td>\n",
       "      <td>None</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 6, ...</td>\n",
       "      <td>1</td>\n",
       "      <td>-8.859381</td>\n",
       "      <td>-7.027368</td>\n",
       "      <td>-8.773966</td>\n",
       "      <td>-6.837958</td>\n",
       "      <td>-9.325139</td>\n",
       "      <td>-6.869084</td>\n",
       "      <td>-9.036779</td>\n",
       "      <td>-6.840749</td>\n",
       "      <td>0.531466</td>\n",
       "      <td>0.006851</td>\n",
       "      <td>0.210901</td>\n",
       "      <td>0.078077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>33.429651</td>\n",
       "      <td>0.049131</td>\n",
       "      <td>-9.041004</td>\n",
       "      <td>-4.465253</td>\n",
       "      <td>huber</td>\n",
       "      <td>5</td>\n",
       "      <td>None</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 6, ...</td>\n",
       "      <td>2</td>\n",
       "      <td>-8.868788</td>\n",
       "      <td>-4.482073</td>\n",
       "      <td>-8.904791</td>\n",
       "      <td>-4.326121</td>\n",
       "      <td>-9.315304</td>\n",
       "      <td>-4.823009</td>\n",
       "      <td>-9.075321</td>\n",
       "      <td>-4.229809</td>\n",
       "      <td>2.843198</td>\n",
       "      <td>0.008770</td>\n",
       "      <td>0.176509</td>\n",
       "      <td>0.225313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>13.585984</td>\n",
       "      <td>0.018832</td>\n",
       "      <td>-9.192518</td>\n",
       "      <td>-6.987506</td>\n",
       "      <td>huber</td>\n",
       "      <td>3</td>\n",
       "      <td>auto</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 4, ...</td>\n",
       "      <td>3</td>\n",
       "      <td>-9.134318</td>\n",
       "      <td>-7.007604</td>\n",
       "      <td>-9.042461</td>\n",
       "      <td>-7.088986</td>\n",
       "      <td>-9.441179</td>\n",
       "      <td>-6.913108</td>\n",
       "      <td>-9.152240</td>\n",
       "      <td>-6.940327</td>\n",
       "      <td>0.292097</td>\n",
       "      <td>0.003301</td>\n",
       "      <td>0.149456</td>\n",
       "      <td>0.067939</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.288010</td>\n",
       "      <td>0.010575</td>\n",
       "      <td>-9.196413</td>\n",
       "      <td>-7.293554</td>\n",
       "      <td>ls</td>\n",
       "      <td>5</td>\n",
       "      <td>auto</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>100</td>\n",
       "      <td>{'n_estimators': 100, 'min_samples_split': 2, ...</td>\n",
       "      <td>4</td>\n",
       "      <td>-9.101610</td>\n",
       "      <td>-7.302003</td>\n",
       "      <td>-9.026912</td>\n",
       "      <td>-7.312645</td>\n",
       "      <td>-9.456259</td>\n",
       "      <td>-7.173397</td>\n",
       "      <td>-9.201033</td>\n",
       "      <td>-7.386171</td>\n",
       "      <td>0.388932</td>\n",
       "      <td>0.006389</td>\n",
       "      <td>0.162211</td>\n",
       "      <td>0.076569</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>12.847157</td>\n",
       "      <td>0.022559</td>\n",
       "      <td>-9.350555</td>\n",
       "      <td>-7.073741</td>\n",
       "      <td>ls</td>\n",
       "      <td>3</td>\n",
       "      <td>auto</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 4, ...</td>\n",
       "      <td>5</td>\n",
       "      <td>-9.146159</td>\n",
       "      <td>-7.089709</td>\n",
       "      <td>-9.199358</td>\n",
       "      <td>-7.103749</td>\n",
       "      <td>-9.699696</td>\n",
       "      <td>-7.021418</td>\n",
       "      <td>-9.357220</td>\n",
       "      <td>-7.080088</td>\n",
       "      <td>0.288627</td>\n",
       "      <td>0.001503</td>\n",
       "      <td>0.215966</td>\n",
       "      <td>0.031358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>123.758774</td>\n",
       "      <td>0.151262</td>\n",
       "      <td>-9.376652</td>\n",
       "      <td>-0.400401</td>\n",
       "      <td>huber</td>\n",
       "      <td>10</td>\n",
       "      <td>None</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>1100</td>\n",
       "      <td>{'n_estimators': 1100, 'min_samples_split': 10...</td>\n",
       "      <td>6</td>\n",
       "      <td>-9.261256</td>\n",
       "      <td>-0.378166</td>\n",
       "      <td>-9.243867</td>\n",
       "      <td>-0.459465</td>\n",
       "      <td>-9.528538</td>\n",
       "      <td>-0.393491</td>\n",
       "      <td>-9.473096</td>\n",
       "      <td>-0.370483</td>\n",
       "      <td>2.854353</td>\n",
       "      <td>0.017081</td>\n",
       "      <td>0.125816</td>\n",
       "      <td>0.035092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>31.697893</td>\n",
       "      <td>0.037851</td>\n",
       "      <td>-9.381693</td>\n",
       "      <td>-8.202307</td>\n",
       "      <td>lad</td>\n",
       "      <td>3</td>\n",
       "      <td>auto</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1100</td>\n",
       "      <td>{'n_estimators': 1100, 'min_samples_split': 6,...</td>\n",
       "      <td>7</td>\n",
       "      <td>-9.379335</td>\n",
       "      <td>-8.311796</td>\n",
       "      <td>-9.382576</td>\n",
       "      <td>-8.658903</td>\n",
       "      <td>-9.473980</td>\n",
       "      <td>-7.820534</td>\n",
       "      <td>-9.290880</td>\n",
       "      <td>-8.017995</td>\n",
       "      <td>0.541961</td>\n",
       "      <td>0.001092</td>\n",
       "      <td>0.064740</td>\n",
       "      <td>0.316303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>77.192894</td>\n",
       "      <td>0.086708</td>\n",
       "      <td>-9.419115</td>\n",
       "      <td>-0.165987</td>\n",
       "      <td>huber</td>\n",
       "      <td>10</td>\n",
       "      <td>auto</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 4, ...</td>\n",
       "      <td>8</td>\n",
       "      <td>-9.385744</td>\n",
       "      <td>-0.164859</td>\n",
       "      <td>-9.288317</td>\n",
       "      <td>-0.193613</td>\n",
       "      <td>-9.572674</td>\n",
       "      <td>-0.164415</td>\n",
       "      <td>-9.429825</td>\n",
       "      <td>-0.141062</td>\n",
       "      <td>3.407669</td>\n",
       "      <td>0.014239</td>\n",
       "      <td>0.102366</td>\n",
       "      <td>0.018629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>46.228543</td>\n",
       "      <td>0.064171</td>\n",
       "      <td>-9.446787</td>\n",
       "      <td>-4.801009</td>\n",
       "      <td>ls</td>\n",
       "      <td>3</td>\n",
       "      <td>None</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>1500</td>\n",
       "      <td>{'n_estimators': 1500, 'min_samples_split': 4,...</td>\n",
       "      <td>9</td>\n",
       "      <td>-9.246573</td>\n",
       "      <td>-4.821677</td>\n",
       "      <td>-9.317156</td>\n",
       "      <td>-4.876202</td>\n",
       "      <td>-9.798950</td>\n",
       "      <td>-4.776650</td>\n",
       "      <td>-9.424668</td>\n",
       "      <td>-4.729506</td>\n",
       "      <td>0.656225</td>\n",
       "      <td>0.004372</td>\n",
       "      <td>0.212942</td>\n",
       "      <td>0.054284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>8.285867</td>\n",
       "      <td>0.043365</td>\n",
       "      <td>-9.460295</td>\n",
       "      <td>-5.666205</td>\n",
       "      <td>huber</td>\n",
       "      <td>5</td>\n",
       "      <td>log2</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>500</td>\n",
       "      <td>{'n_estimators': 500, 'min_samples_split': 6, ...</td>\n",
       "      <td>10</td>\n",
       "      <td>-9.393840</td>\n",
       "      <td>-5.684121</td>\n",
       "      <td>-9.289175</td>\n",
       "      <td>-5.742441</td>\n",
       "      <td>-9.750806</td>\n",
       "      <td>-5.571781</td>\n",
       "      <td>-9.407503</td>\n",
       "      <td>-5.666476</td>\n",
       "      <td>0.465475</td>\n",
       "      <td>0.006885</td>\n",
       "      <td>0.173829</td>\n",
       "      <td>0.061337</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    mean_fit_time  mean_score_time  mean_test_score  mean_train_score  \\\n",
       "12      29.291088         0.035073        -8.998761         -6.893790   \n",
       "3       33.429651         0.049131        -9.041004         -4.465253   \n",
       "9       13.585984         0.018832        -9.192518         -6.987506   \n",
       "0        3.288010         0.010575        -9.196413         -7.293554   \n",
       "7       12.847157         0.022559        -9.350555         -7.073741   \n",
       "10     123.758774         0.151262        -9.376652         -0.400401   \n",
       "19      31.697893         0.037851        -9.381693         -8.202307   \n",
       "2       77.192894         0.086708        -9.419115         -0.165987   \n",
       "16      46.228543         0.064171        -9.446787         -4.801009   \n",
       "21       8.285867         0.043365        -9.460295         -5.666205   \n",
       "\n",
       "   param_loss param_max_depth param_max_features param_min_samples_leaf  \\\n",
       "12        lad               5               None                      6   \n",
       "3       huber               5               None                      8   \n",
       "9       huber               3               auto                      2   \n",
       "0          ls               5               auto                      6   \n",
       "7          ls               3               auto                      6   \n",
       "10      huber              10               None                      6   \n",
       "19        lad               3               auto                      2   \n",
       "2       huber              10               auto                      2   \n",
       "16         ls               3               None                      6   \n",
       "21      huber               5               log2                      4   \n",
       "\n",
       "   param_min_samples_split param_n_estimators  \\\n",
       "12                       6                500   \n",
       "3                        6                500   \n",
       "9                        4                500   \n",
       "0                        2                100   \n",
       "7                        4                500   \n",
       "10                      10               1100   \n",
       "19                       6               1100   \n",
       "2                        4                500   \n",
       "16                       4               1500   \n",
       "21                       6                500   \n",
       "\n",
       "                                               params  rank_test_score  \\\n",
       "12  {'n_estimators': 500, 'min_samples_split': 6, ...                1   \n",
       "3   {'n_estimators': 500, 'min_samples_split': 6, ...                2   \n",
       "9   {'n_estimators': 500, 'min_samples_split': 4, ...                3   \n",
       "0   {'n_estimators': 100, 'min_samples_split': 2, ...                4   \n",
       "7   {'n_estimators': 500, 'min_samples_split': 4, ...                5   \n",
       "10  {'n_estimators': 1100, 'min_samples_split': 10...                6   \n",
       "19  {'n_estimators': 1100, 'min_samples_split': 6,...                7   \n",
       "2   {'n_estimators': 500, 'min_samples_split': 4, ...                8   \n",
       "16  {'n_estimators': 1500, 'min_samples_split': 4,...                9   \n",
       "21  {'n_estimators': 500, 'min_samples_split': 6, ...               10   \n",
       "\n",
       "    split0_test_score  split0_train_score  split1_test_score  \\\n",
       "12          -8.859381           -7.027368          -8.773966   \n",
       "3           -8.868788           -4.482073          -8.904791   \n",
       "9           -9.134318           -7.007604          -9.042461   \n",
       "0           -9.101610           -7.302003          -9.026912   \n",
       "7           -9.146159           -7.089709          -9.199358   \n",
       "10          -9.261256           -0.378166          -9.243867   \n",
       "19          -9.379335           -8.311796          -9.382576   \n",
       "2           -9.385744           -0.164859          -9.288317   \n",
       "16          -9.246573           -4.821677          -9.317156   \n",
       "21          -9.393840           -5.684121          -9.289175   \n",
       "\n",
       "    split1_train_score  split2_test_score  split2_train_score  \\\n",
       "12           -6.837958          -9.325139           -6.869084   \n",
       "3            -4.326121          -9.315304           -4.823009   \n",
       "9            -7.088986          -9.441179           -6.913108   \n",
       "0            -7.312645          -9.456259           -7.173397   \n",
       "7            -7.103749          -9.699696           -7.021418   \n",
       "10           -0.459465          -9.528538           -0.393491   \n",
       "19           -8.658903          -9.473980           -7.820534   \n",
       "2            -0.193613          -9.572674           -0.164415   \n",
       "16           -4.876202          -9.798950           -4.776650   \n",
       "21           -5.742441          -9.750806           -5.571781   \n",
       "\n",
       "    split3_test_score  split3_train_score  std_fit_time  std_score_time  \\\n",
       "12          -9.036779           -6.840749      0.531466        0.006851   \n",
       "3           -9.075321           -4.229809      2.843198        0.008770   \n",
       "9           -9.152240           -6.940327      0.292097        0.003301   \n",
       "0           -9.201033           -7.386171      0.388932        0.006389   \n",
       "7           -9.357220           -7.080088      0.288627        0.001503   \n",
       "10          -9.473096           -0.370483      2.854353        0.017081   \n",
       "19          -9.290880           -8.017995      0.541961        0.001092   \n",
       "2           -9.429825           -0.141062      3.407669        0.014239   \n",
       "16          -9.424668           -4.729506      0.656225        0.004372   \n",
       "21          -9.407503           -5.666476      0.465475        0.006885   \n",
       "\n",
       "    std_test_score  std_train_score  \n",
       "12        0.210901         0.078077  \n",
       "3         0.176509         0.225313  \n",
       "9         0.149456         0.067939  \n",
       "0         0.162211         0.076569  \n",
       "7         0.215966         0.031358  \n",
       "10        0.125816         0.035092  \n",
       "19        0.064740         0.316303  \n",
       "2         0.102366         0.018629  \n",
       "16        0.212942         0.054284  \n",
       "21        0.173829         0.061337  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Get all of the cv results and sort by the test performance\n",
    "random_results = pd.DataFrame(random_cv.cv_results_).sort_values('mean_test_score', ascending = False)\n",
    "\n",
    "random_results.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n",
       "             learning_rate=0.1, loss='lad', max_depth=5, max_features=None,\n",
       "             max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "             min_impurity_split=None, min_samples_leaf=6,\n",
       "             min_samples_split=6, min_weight_fraction_leaf=0.0,\n",
       "             n_estimators=500, presort='auto', random_state=42,\n",
       "             subsample=1.0, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_cv.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The best gradient boosted model has the following hyperparameters:\n",
    "\n",
    "* `loss = lad`\n",
    "* `n_estimators = 500`\n",
    "* `max_depth = 5`\n",
    "* `min_samples_leaf = 6`\n",
    "* `min_samples_split = 6`\n",
    "* `max_features = None` (This means that `max_features = n_features` according to the docs)\n",
    "\n",
    "Using random search is a good method to narrow down the possible hyperparameters to try. Initially, we had no idea which combination would work the best, but this at least narrows down the range of options.\n",
    "\n",
    "We could use the random search results to inform a grid search by creating a grid with hyperparameters close to those that worked best during the randomized search. However, rather than evaluating all of these settings again, I will focus on a single one, the number of trees in the forest (`n_estimators`). By varying only one hyperparameter, we can directly observe how it affects performance. In the case of the number of trees, we would expect to see a significant affect on the amount of under vs overfitting.\n",
    "\n",
    "Here we will use grid search with a grid that only has the `n_estimators` hyperparameter. We will evaluate a range of trees then plot the training and testing performance to get an idea of what increasing the number of trees does for our model. We will fix the other hyperparameters at the best values returned from random search to isolate the number of trees effect."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a range of trees to evaluate\n",
    "trees_grid = {'n_estimators': [100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800]}\n",
    "\n",
    "model = GradientBoostingRegressor(loss = 'lad', max_depth = 5,\n",
    "                                  min_samples_leaf = 6,\n",
    "                                  min_samples_split = 6,\n",
    "                                  max_features = None,\n",
    "                                  random_state = 42)\n",
    "\n",
    "# Grid Search Object using the trees range and the random forest model\n",
    "grid_search = GridSearchCV(estimator = model, param_grid=trees_grid, cv = 4, \n",
    "                           scoring = 'neg_mean_absolute_error', verbose = 1,\n",
    "                           n_jobs = -1, return_train_score = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 4 folds for each of 15 candidates, totalling 60 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  60 out of  60 | elapsed:  4.0min finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=4, error_score='raise',\n",
       "       estimator=GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n",
       "             learning_rate=0.1, loss='lad', max_depth=5, max_features=None,\n",
       "             max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "             min_impurity_split=None, min_samples_leaf=6,\n",
       "             min_samples_split=6, min_weight_fraction_leaf=0.0,\n",
       "             n_estimators=100, presort='auto', random_state=42,\n",
       "             subsample=1.0, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=-1,\n",
       "       param_grid={'n_estimators': [100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='neg_mean_absolute_error', verbose=1)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Fit the grid search\n",
    "grid_search.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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LiUpKYljx47h5eVFhw4d2Lt3L2vXruX48ePMnj0bk+l8R/qJEyd48cUXueWWW3jsscfYtm0bc+fOJSoqiunTp2OxWACIiYmhd+/exMTEcPfdd1O1alX++ecf5s6dy4YNGwgPD88Ril555RXq1KlDo0aNMAzjogFn7NixfPnll5QsWZLWrVtjNpv57bffGDFiBH/++SdvvvkmAQEB9OrViw0bNrBjxw7atWtH+fLl8334GHL/v5ScnEyfPn2Ijo6mQYMG3HfffcTExPDzzz+zbt06wsPDXULke++9x48//khYWBgdO3YkLS2NlStX0qdPH0aNGsW9994LwIEDB3jhhRcwDINWrVoRGBjIzp07+frrr9m6dStffPGFy/dMrg8KOXLd2LlzJxEREVgsFmevwc6dO5k2bRp33HEHn376KcWKFQOgb9++9OnTh08++YSmTZu6jPvHxcUxe/ZsatWq5bL/b775hoCAAPr06eNsGzlyJHFxcbz11lsuf73+8ssvvP3227z99tvMmTPHZT9lypRh0qRJeQ57zZ4929kTMXDgQDZs2MDmzZv5+uuvnR/A5cuXJzw8nF9//ZUuXboAMH78eIoVK8bs2bMpVaqUc38LFixg1KhRLF26NEfIOX36NHPnznVOCu3UqRPdu3dnwYIFzpATFRXF/PnzqVu3LmPGjHFOBO3cuTM9evRg3LhxTJs27YqOdXbe3t60atWKBQsW8OeffzqDEzh6DwDatm0LwNy5c7FarUybNs35gWWz2ejduzdr1qwhJibGGf4u5dZbb+Xxxx/nm2++4eOPP+a9995zazt3HT16lE6dOvHmm28CcO7cOTp06MC6deto1KgRY8aMcQaL559/nqioKPbt20eNGjWc+zhz5gyPP/44r776KuDofRg9ejQLFizgm2++4ZlnngHggw8+ICYmhg8//ND54QyOXrgRI0Ywfvx43nrrrRzv/3//+98l38e2bdv48ssvqVmzJuPGjXP+LCYmJjJgwAAWLFhAkyZNuO++++jTpw9nzpxhx44dtG/fPt96cC6U2/+liRMnEh0dzSuvvOL8vwHw+++/8+KLLzJ69GjGjRsHwKpVq/jxxx+5//77GTFihPP70KtXL3r06MG7775Lw4YNKVasGD/88ANnzpxhwoQJLj2oQ4YMYfny5fzxxx86GeE6pFgq15xff/2VqVOn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7Nmzcyz7+++/SU1NpXbt2vlXsIiIiFy3CjXkVKhQgZtvvpmoqCjWrFnjsmzhwoVER0fTuHFj57V0LtSsWTMsFguLFy/m4MGDzvYzZ87wySefAPDoo48W3BsQERGR60ahTzweOnQo/fr144033qBZs2ZUrlyZvXv3sn79ekqVKsXrr78OQFJSEl9//TUBAQF069YNgJIlS/LSSy/xwQcf8Mwzz3D//ffj4+NDZGQkx48f5+mnn+bOO+8s7LckIiIi16BCDzk1a9Zk5syZhIeHs3HjRn777TdCQkLo1KkTvXv3plSpUoAj5ISHh1O+fHlnyAF45JFHKF++PLNmzWL58uXY7XaqV69O//79adOmTWG/HREREblGFXrIAcedwt95552LrhMaGsqmTZtyXda0aVOaNm1aAJWJiIiIpyj02zqIiIiIFAaFHBEREfFICjkiIiLikRRyRERExCMp5IiIiIhHUsgRERERj6SQIyIiIh5JIUdEREQ8kkKOiIiIeCSFHBEREfFICjkiIiLikRRyRERExCMp5IiIiIhHUsgRERERj+RWyBk3bhy7d+8u6FpERERE8o1bIWfevHmcPHmyoGsRERERyTduhZyaNWuya9eugq5FREREJN94ubPS3XffzfTp01m/fj3VqlUjJCTEZblhGPTp06dAChQRERG5Em6FnClTpgCwY8cOduzYkWO5Qo6IiIhca9wKORs3bizoOkRERETylVshJ4vNZmP//v0kJSVRokQJKlWqhGEYBVWbiIiIyBVzO+T8/PPPfPbZZ8THxzvbgoODeeGFF+jQoUOBFCciIiJypdwKOWvWrGH48OE0aNCA//u//yMkJISTJ0/yyy+/8P777xMUFMQ999xT0LWKiIiIuM2tkDN9+nRatGjB6NGjXdofeughBg8ezMyZMxVyRERE5Jri1nVy/vnnH9q1a5frsnbt2rF37958LUpERETkarkVckqUKEFCQkKuy+Lj4/Hx8cnXokRERESullshp2HDhoSHh3PkyBGX9iNHjhAeHk6jRo0KpDgRERGRK+XWnJx+/frRo0cPunTpQp06dQgJCeHUqVPs3LmTwMBAXnjhhYKuU0REROSyuNWTU6pUKWbNmkWXLl2wWq3s2bMHq9VKly5dmD17NuXLly/oOkVEREQui1s9OUOHDqVz584MGDCgoOsRERERyRdu9eRE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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2f4b91e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Get the results into a dataframe\n",
    "results = pd.DataFrame(grid_search.cv_results_)\n",
    "\n",
    "# Plot the training and testing error vs number of trees\n",
    "figsize(8, 8)\n",
    "plt.style.use('fivethirtyeight')\n",
    "plt.plot(results['param_n_estimators'], -1 * results['mean_test_score'], label = 'Testing Error')\n",
    "plt.plot(results['param_n_estimators'], -1 * results['mean_train_score'], label = 'Training Error')\n",
    "plt.xlabel('Number of Trees'); plt.ylabel('Mean Abosolute Error'); plt.legend();\n",
    "plt.title('Performance vs Number of Trees');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean_fit_time</th>\n",
       "      <th>mean_score_time</th>\n",
       "      <th>mean_test_score</th>\n",
       "      <th>mean_train_score</th>\n",
       "      <th>param_n_estimators</th>\n",
       "      <th>params</th>\n",
       "      <th>rank_test_score</th>\n",
       "      <th>split0_test_score</th>\n",
       "      <th>split0_train_score</th>\n",
       "      <th>split1_test_score</th>\n",
       "      <th>split1_train_score</th>\n",
       "      <th>split2_test_score</th>\n",
       "      <th>split2_train_score</th>\n",
       "      <th>split3_test_score</th>\n",
       "      <th>split3_train_score</th>\n",
       "      <th>std_fit_time</th>\n",
       "      <th>std_score_time</th>\n",
       "      <th>std_test_score</th>\n",
       "      <th>std_train_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>43.254497</td>\n",
       "      <td>0.025568</td>\n",
       "      <td>-8.981504</td>\n",
       "      <td>-6.601028</td>\n",
       "      <td>800</td>\n",
       "      <td>{'n_estimators': 800}</td>\n",
       "      <td>1</td>\n",
       "      <td>-8.825018</td>\n",
       "      <td>-6.739448</td>\n",
       "      <td>-8.757257</td>\n",
       "      <td>-6.648109</td>\n",
       "      <td>-9.297520</td>\n",
       "      <td>-6.486269</td>\n",
       "      <td>-9.046451</td>\n",
       "      <td>-6.530287</td>\n",
       "      <td>7.208308</td>\n",
       "      <td>0.002966</td>\n",
       "      <td>0.211453</td>\n",
       "      <td>0.099437</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>51.971400</td>\n",
       "      <td>0.050644</td>\n",
       "      <td>-8.982193</td>\n",
       "      <td>-6.633542</td>\n",
       "      <td>750</td>\n",
       "      <td>{'n_estimators': 750}</td>\n",
       "      <td>2</td>\n",
       "      <td>-8.830294</td>\n",
       "      <td>-6.772908</td>\n",
       "      <td>-8.750657</td>\n",
       "      <td>-6.660453</td>\n",
       "      <td>-9.299357</td>\n",
       "      <td>-6.520818</td>\n",
       "      <td>-9.048696</td>\n",
       "      <td>-6.579989</td>\n",
       "      <td>2.513258</td>\n",
       "      <td>0.013913</td>\n",
       "      <td>0.213125</td>\n",
       "      <td>0.094501</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>46.690784</td>\n",
       "      <td>0.049380</td>\n",
       "      <td>-8.989100</td>\n",
       "      <td>-6.686214</td>\n",
       "      <td>700</td>\n",
       "      <td>{'n_estimators': 700}</td>\n",
       "      <td>3</td>\n",
       "      <td>-8.835777</td>\n",
       "      <td>-6.812928</td>\n",
       "      <td>-8.754819</td>\n",
       "      <td>-6.695770</td>\n",
       "      <td>-9.313318</td>\n",
       "      <td>-6.611240</td>\n",
       "      <td>-9.052721</td>\n",
       "      <td>-6.624919</td>\n",
       "      <td>1.257214</td>\n",
       "      <td>0.006475</td>\n",
       "      <td>0.216536</td>\n",
       "      <td>0.079884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>37.236593</td>\n",
       "      <td>0.041358</td>\n",
       "      <td>-8.994138</td>\n",
       "      <td>-6.835031</td>\n",
       "      <td>550</td>\n",
       "      <td>{'n_estimators': 550}</td>\n",
       "      <td>4</td>\n",
       "      <td>-8.853451</td>\n",
       "      <td>-7.003413</td>\n",
       "      <td>-8.755897</td>\n",
       "      <td>-6.781878</td>\n",
       "      <td>-9.325442</td>\n",
       "      <td>-6.809121</td>\n",
       "      <td>-9.041991</td>\n",
       "      <td>-6.745712</td>\n",
       "      <td>0.518138</td>\n",
       "      <td>0.006888</td>\n",
       "      <td>0.217136</td>\n",
       "      <td>0.099783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>43.378776</td>\n",
       "      <td>0.036597</td>\n",
       "      <td>-8.995319</td>\n",
       "      <td>-6.740194</td>\n",
       "      <td>650</td>\n",
       "      <td>{'n_estimators': 650}</td>\n",
       "      <td>5</td>\n",
       "      <td>-8.850857</td>\n",
       "      <td>-6.864375</td>\n",
       "      <td>-8.754361</td>\n",
       "      <td>-6.721452</td>\n",
       "      <td>-9.325111</td>\n",
       "      <td>-6.708191</td>\n",
       "      <td>-9.051181</td>\n",
       "      <td>-6.666758</td>\n",
       "      <td>0.795234</td>\n",
       "      <td>0.004937</td>\n",
       "      <td>0.218405</td>\n",
       "      <td>0.074480</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    mean_fit_time  mean_score_time  mean_test_score  mean_train_score  \\\n",
       "14      43.254497         0.025568        -8.981504         -6.601028   \n",
       "13      51.971400         0.050644        -8.982193         -6.633542   \n",
       "12      46.690784         0.049380        -8.989100         -6.686214   \n",
       "9       37.236593         0.041358        -8.994138         -6.835031   \n",
       "11      43.378776         0.036597        -8.995319         -6.740194   \n",
       "\n",
       "   param_n_estimators                 params  rank_test_score  \\\n",
       "14                800  {'n_estimators': 800}                1   \n",
       "13                750  {'n_estimators': 750}                2   \n",
       "12                700  {'n_estimators': 700}                3   \n",
       "9                 550  {'n_estimators': 550}                4   \n",
       "11                650  {'n_estimators': 650}                5   \n",
       "\n",
       "    split0_test_score  split0_train_score  split1_test_score  \\\n",
       "14          -8.825018           -6.739448          -8.757257   \n",
       "13          -8.830294           -6.772908          -8.750657   \n",
       "12          -8.835777           -6.812928          -8.754819   \n",
       "9           -8.853451           -7.003413          -8.755897   \n",
       "11          -8.850857           -6.864375          -8.754361   \n",
       "\n",
       "    split1_train_score  split2_test_score  split2_train_score  \\\n",
       "14           -6.648109          -9.297520           -6.486269   \n",
       "13           -6.660453          -9.299357           -6.520818   \n",
       "12           -6.695770          -9.313318           -6.611240   \n",
       "9            -6.781878          -9.325442           -6.809121   \n",
       "11           -6.721452          -9.325111           -6.708191   \n",
       "\n",
       "    split3_test_score  split3_train_score  std_fit_time  std_score_time  \\\n",
       "14          -9.046451           -6.530287      7.208308        0.002966   \n",
       "13          -9.048696           -6.579989      2.513258        0.013913   \n",
       "12          -9.052721           -6.624919      1.257214        0.006475   \n",
       "9           -9.041991           -6.745712      0.518138        0.006888   \n",
       "11          -9.051181           -6.666758      0.795234        0.004937   \n",
       "\n",
       "    std_test_score  std_train_score  \n",
       "14        0.211453         0.099437  \n",
       "13        0.213125         0.094501  \n",
       "12        0.216536         0.079884  \n",
       "9         0.217136         0.099783  \n",
       "11        0.218405         0.074480  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.sort_values('mean_test_score', ascending = False).head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From this plot, it's pretty clear that our model is [overfitting](https://elitedatascience.com/overfitting-in-machine-learning)! The training error is significantly lower than the testing error, which shows that the model is learning the training data very well but then is not able to generalize to the test data as well. Moveover, as the number of trees increases, the amount of overfitting increases. Both the test and training error decrease as the number of trees increase but the training error decreases more rapidly. \n",
    "\n",
    "There will always be a difference between the training error and testing error (the training error is always lower) but if there is a significant difference, we want to try and reduce overfitting, either by getting more training data or reducing the complexity of the model through hyperparameter tuning or regularization. [For the gradient boosting regressor](https://www.quora.com/How-do-you-correct-for-overfitting-for-a-Gradient-Boosted-Machine), some options include reducing the number of trees, reducing the max depth of each tree, and increasing the minimum number of samples in a leaf node. For anyone who wants to go further into the gradient boosting regressor, [here is a great article.](http://blog.kaggle.com/2017/01/23/a-kaggle-master-explains-gradient-boosting/) For now, we will use the model with the best performance and accept that it may be overfitting to the training set. \n",
    "\n",
    "Based on the cross validation results, the best model using 800 trees and achieves a cross validation error under 9. This indicates that the average cross-validation estimate of the Energy Star Score is within 9 points of the true answer! "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Evaluate Final Model on the Test Set\n",
    "\n",
    "We will use the best model from hyperparameter tuning to make predictions on the testing set. Remember, our model has never seen the test set before, so this performance should be a good indicator of how the model would perform if deployed in the real world. \n",
    "\n",
    "For comparison, we can also look at the performance of the default model. The code below creates the final model, trains it (with timing), and evaluates on the test set. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n",
       "             learning_rate=0.1, loss='lad', max_depth=5, max_features=None,\n",
       "             max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "             min_impurity_split=None, min_samples_leaf=6,\n",
       "             min_samples_split=6, min_weight_fraction_leaf=0.0,\n",
       "             n_estimators=800, presort='auto', random_state=42,\n",
       "             subsample=1.0, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Default model\n",
    "default_model = GradientBoostingRegressor(random_state = 42)\n",
    "\n",
    "# Select the best model\n",
    "final_model = grid_search.best_estimator_\n",
    "\n",
    "final_model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "914 ms ± 96.2 ms per loop (mean ± std. dev. of 5 runs, 1 loop each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit -n 1 -r 5\n",
    "default_model.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "12 s ± 659 ms per loop (mean ± std. dev. of 5 runs, 1 loop each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit -n 1 -r 5\n",
    "final_model.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Default model performance on the test set: MAE = 10.0118.\n",
      "Final model performance on the test set:   MAE = 9.0446.\n"
     ]
    }
   ],
   "source": [
    "default_pred = default_model.predict(X_test)\n",
    "final_pred = final_model.predict(X_test)\n",
    "\n",
    "print('Default model performance on the test set: MAE = %0.4f.' % mae(y_test, default_pred))\n",
    "print('Final model performance on the test set:   MAE = %0.4f.' % mae(y_test, final_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final model does out-perform the baseline model by about 10%, but at the cost of significantly increased running time (it's about 12 times slower on my machine). Machine learning is often a field of tradeoffs: bias vs variance, acccuracy vs interpretability, accuracy vs running time, and the final decision of which model to use depends on the situation. Here, the increase in run time is not an impediment, because while the relative difference is large, the absolute magnitude of the training time is not significant. In a different situation, the balance might not be the same so we would need to consider what we are optimizing for and the limitations we have to work with. \n",
    "\n",
    "To get a sense of the predictions, we can plot the distribution of true values on the test set and the predicted values on the test set. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2f464bc50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figsize(8, 8)\n",
    "\n",
    "# Density plot of the final predictions and the test values\n",
    "sns.kdeplot(final_pred, label = 'Predictions')\n",
    "sns.kdeplot(y_test, label = 'Values')\n",
    "\n",
    "# Label the plot\n",
    "plt.xlabel('Energy Star Score'); plt.ylabel('Density');\n",
    "plt.title('Test Values and Predictions');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The distribution looks to be nearly the same although the density of the predicted values is closer to the median of the test values rather than to the actual peak at 100. It appears the model might be less accurate at predicting the extreme values and instead predicts values closer to the median. \n",
    "\n",
    "Another diagnostic plot is a histogram of the residuals. Ideally, we would hope that the residuals are normally distributed, meaning that the model is wrong the same amount in both directions (high and low). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HT/wwAOKiYnRokWLdM8996ht27bnNc6oqCjt3LnTGnz+9Kc/1Vr7wgsv6OjRo/rnP/9ps/H7P//5j55++mk9/fTT1e46/Prrr0pMTJSfn58kadSoURo2bJjWrVunhx9+WE2a1P5jbf78+dqzZ48eeOABTZgwwfoLPz09XZMmTdLTTz+tDz/8UD169FCPHj307rvvXvR+mbKyMh0+fFgfffSRVq1aJbPZrMjISOv5LVu2aN26derbt6+effZZa//HjRun6OhoPffcc7r55pvVrFkzffjhhyosLNQbb7yhm2++2drGk08+qU2bNmnHjh21bsBOTEzUrl27FB0drYceekhS1d2+F154QWvXrpWrq+sFje+3335TUlKSAgMDtWDBApv5f+qpp7Rx40Z98cUX6tevX42vX7lypcrKyrR48WJ5e3tb+xUTE6OtW7fq0KFD5/09CJwNS12AnTg7O0vSOTcll5aW6ueff7Z+3bRpUy1atEj/+c9/rG2cS213lGpy11132Txp1aZNG40aNUplZWXatGlTnds5X4cOHdK3336rG264odrTbvfcc49uvvlm7dy5Uz/99JPNud69e1tDjyR5eXnpmmuuUVFRkY4fP17r9U6fPq1Nmzapbdu2Gj9+vM1djh49eig8PFy///670tLSLmpcgwcPtnmc/bbbbtOgQYMUFxenrl27av78+dYlL0nWtySYOnWqTWho3bq1IiMjVVBQoK1bt9pcY8eOHaqsrLR+PW3aNK1fv/6sT51t2rRJbm5uGjdunPWYo6PjOcPiubi4uOiZZ57RP/7xj2rtWO6cHTt27JztZGZm2vTr5Zdftv59AfWJOz6AnZw8eVKS1KxZs1prhg0bpueff14TJ05Uly5ddMstt+i2225TUFBQnX85OTk5ndcvizOfMrO4/vrrJUnZ2dl1bud87dy5U5Jq/WXdvXt3ffPNN9q5c6euvfZa6/GaHtG2PD5+tn0+eXl5KikpUa9evWpcDurevbvWrl2rnTt3nldw/KMzH2ffu3evPv74YzVp0kRPPvmk7rrrrmr1P/30k5ydnbVq1aoa+yxVzdU999yj/v3764MPPlBcXJxWrVqlnj176tZbb9Vtt91W61KSVPUU4K+//qrAwEC5uLjYnDObzerUqZP27dt3QeNt0aKF+vXrp8rKSuXk5Gj37t3au3evcnJy9O23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w4YN05gxY2z2wtQHDw8PLV26VAkJCdqyZYuSk5Pl4eGhu+66S2PGjLHe6WgoERERWr9+vX744Qf961//0vTp0+Xg4KAXXnhBycnJSklJ0dq1a2UymdSpUydNnTrV5kkwb29vLVmyRPHx8crMzNS2bdtkNpsVGhqq8ePHn3XjvLOzs+bPn6/4+Hht2LBBH3zwga666irNmzdPS5YsqbbkOWfOHL3xxhv67LPP9Msvv+iaa67R66+/royMDJvg061bN7322mtatGiRPvvsMzk4OKh9+/YaM2aM7rvvPvXv319ffvllrf267rrrFBcXp7feekvp6ek6duyYvLy8NGTIEI0dO7be91wBDsePH6998RUAAOAKwh4fAABgGAQfAABgGAQfAABgGAQfAABgGAQfAABgGAQfAABgGASfK1hDfrJ2Y8NcVGEeqjAPVZiH/2EuqhhhHgg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMJpcioseP35cCxcu1GeffaZjx46pdevWCg0N1fjx49W0aVNrXVlZmd577z2tWbNG+/fvl5eXlwYMGKDRo0erSZPqXU9NTVVSUpLy8vJkNpsVGhqqCRMmqFmzZvYcHgAAuEzZ/Y7PyZMnNX78eK1atUq+vr4aPny4WrVqpbfffluTJk1SWVmZtXbOnDl67bXXZDabdd9996l169aKi4vTU089Va3dhIQEzZw5UxUVFYqMjJS/v7+SkpI0efJknT592p5DBAAAlym73/FZvXq1du/ereHDh2vq1KmSpMrKSj399NNav3691q9fr/79+2vHjh1avXq1+vTpoxdffFEODg6qrKzUzJkz9dFHH+mzzz5Tr169JEkHDx5UXFycAgICFBcXZ70bFBcXp6VLl2r16tWKjIy091ABAMBlxu53fH788UdJ0oABA6zHHBwcNGjQIElSVlaWJOn999+XJMXExMjBwcFaFxsbKwcHB61Zs8b6+lWrVqm8vFzR0dE2S2DR0dFyc3OzqQUAAMZl9+Dj4eEhqeouzZkOHz4sSWrZsqUkKSMjQy1atNBVV11lU9e6dWv5+voqIyPDeszy56CgIJtak8mkgIAAZWdnq7CwsH4HAgAAGh27B58BAwbI2dlZ8+bN03fffaeSkhKlp6fr3//+t9zd3TVgwACdOnVKv/32mzp27Fhj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0+Xu7q7OnTs30KgAAEBjYff38Rk8eLAk6dVXX7XZl7NixQr99ttvuvfee+Xk5KR+/frJyclJixcvtlnCSkhIUFFRkbUdSerdu7fc3NyUmJio/Px86/G1a9cqLy9PgwYNkqMjn8cKAIDR2f0jKwYMGKDPPvtMW7du1YgRI3Tbbbdp9+7dSktLk6+vr2JiYiRJfn5+GjFihJYvX65Ro0YpJCREubm5SktLU2BgoE3w8fDw0KRJkzR79myNHDlSffv21eHDh7V582b5+voqOjra3sMEAACXIbsHHwcHB7344ot67733tGbNGr3//vvy8PDQsGHDNGHCBJtNyLGxsWrbtq2Sk5O1cuVKeXl5KSoqSjExMdbH1C2GDRsms9msxMREJScny2w2Kzw8XBMnTqy2kRoAABiT3YOPJDVp0kT333+/7r///rPWOTg4KCIiQhEREXVqNywsTGFhYfXRRQAAcAVi4wsAADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADAMgg8AADCMJpfiogsWLNBbb71V47mwsDA9//zz1q9TU1OVlJSkvLw8mc1mhYaGasKECWrWrFm1127btk3x8fHKzc2VyWRSSEiIYmNj5enp2WBjAQAAjcclCT6//PKLXFxc9Ne//rXauauuusr654SEBL355pvq2rWrIiMjlZOTo6SkJGVlZWnhwoVydna21m7YsEHTp0+Xt7e3hg4dqkOHDik1NVUZGRlatmyZmjdvbpexAQCAy9clCz6dO3fW+PHja605ePCg4uLiFBAQoLi4ODVpUtXVuLg4LV26VKtXr1ZkZKQk6eTJk5ozZ468vb2VmJgod3d3SVLPnj01a9YsxcfHa8qUKQ0/MAAAcFmz+x6fwsJCHThwQF27dj1r3apVq1ReXq7o6Ghr6JGk6Ohoubm5ac2aNdZj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DJQkbd++vVo76enpcnd3V+fOnRtgNAAAoDGxe/B58803tWPHDgUEBOi1116rdQmqX79+cnJy0uLFi22WsBISElRUVGR9+kuSevfuLTc3NyUmJio/P996fO3atcrLy9OgQYNqfN8gAABgLHbd3HzkyBElJydLkjp16qTly5fXWDd69Gj5+flpxIgRWr58uUaNGqWQkBDl5uYqLS1NgYGBNsHHw8NDkyZN0uzZszVy5Ej17dtXhw8f1ubNm+Xr66vo6Gh7DA8AAFzm7Bp8srKyrB8uum7dulrroqKiZDKZFBsbq7Zt2yo5OVkrV66Ul5eXoqKiFBMTY31M3WLYsGEym81KTExUcnKyzGazwsPDNXHiRHl4eDTouAAAQONg1+Bzxx136Ouvv65zvYODgyIiIhQREVGn+rCwMIWFhV1o9wAAwBWOjS8AAMAwCD4AAMAwCD4AAMAwCLPIfTEAABnaSURBVD4AAOD/27vzqKjO+w3gzwDDUmAQiEcQQYWYVisOwRxqUhFFSZElLilGgxQUcY2inrjVxMSjJ8a6mxhFS0RNKi4JoXWNa4qTJqkIUqJpR1xQUAFFRBxwBub3B537c8LgUhlm5t7nc07OMfd9eX3vF2Geue9750qGxR9SSkREj3f+wgWsiI1t0zE1Gg0UvXtj5vr1bToukTVj8CEisgFuGg2WqlRtPu47fIAzSQyXuoiIiEgyGHyIiIhIMhh8iIiISDIYfIiIiEgyGHyIiIhIMhh8iIiISDIYfIiIiEgyGHyIiIhIMhh8iIiISDIYfIiIiEgy+MgKIpFbO2MGtCUlAJqfzeTSho8ouKZWt9lYRETtgcGHSOS0JSVmecYTACQrFGYZl4jIXLjURURERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJLB4ENERESSweBDREREksHgQ0RERJJh0eBTWVmJQYMGYefOnSbb9+/fj7Fjx2LAgAGIi4vDmjVrcP/+fZN9T506hfHjx2PgwIH43e9+hyVLluD27dvmnD4RERHZGIsFn/v372PevHmoq6sz2Z6VlYXFixejqakJ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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2f48f3f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figsize = (6, 6)\n",
    "\n",
    "# Calculate the residuals \n",
    "residuals = final_pred - y_test\n",
    "\n",
    "# Plot the residuals in a histogram\n",
    "plt.hist(residuals, color = 'red', bins = 20,\n",
    "         edgecolor = 'black')\n",
    "plt.xlabel('Error'); plt.ylabel('Count')\n",
    "plt.title('Distribution of Residuals');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The residuals are close to normally disributed, with a few noticeable outliers on the low end. These indicate errors where the model estimate was far below that of the true value. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Conclusions\n",
    "\n",
    "In this notebook, we covered crucial concepts in the machine learning pipeline:\n",
    "\n",
    "* Imputing missing values\n",
    "* Evaluating and comparing several machine learning methods\n",
    "* Hyperparameter tuning a machine learning model using random search and cross validation\n",
    "* Evaluating the best model on the testing set\n",
    "\n",
    "The results showed us that machine learning is applicable to our problem, with the final model able to the predict the Energy Star Score of a building to within 9.1 points. We also saw that hyperparamter tuning was able to improve the performance of the model although at a considerable cost in terms of time invested. This is a good reminder that proper feature engineering and gathering more data (if possible!) has a much larger pay-off than fine-tuning the model. We also observed the trade-off in run-time versus accuracy, which is one of many considerations we have to take into account when designing machine learning models. \n",
    "\n",
    "We know our model is accurate, but do we know why it makes the predictions it does? The next step in the machine learning process is crucial: trying to understand how the model makes predictions. Achieveing high accuracy is great, but it would also be helpful if we could figure out why the model is able to predict accurately so we could use this information to better understand the problem. For example, what features does the model rely on to infer the Energy Star Score? It is possible to use this model for feature selection and implement a simpler model that is more interpretable? \n",
    "\n",
    "In the final notebook, we will try to answer these questions and draw final conclusions from the project!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
